<?xml version="1.0" encoding="utf-8" ?> <sqlMap> <resultMap id="project-result" class="ProjectRecord"> <result property="ID" column="ProjectID" type="integer"/> <result property="Name" column="Name" /> <result property="Description" column="Description" /> <result property="DateCreated" column="CreationDate" typeHandler="DateTimeTypeHandler" /> <result property="EstimateDuration" column="EstimateDuration" type="float" /> <result property="CompletionDate" column="CompletionDate" typeHandler="DateTimeTypeHandler" /> <result property="CreatorUserName" column="CreatorID" /> <result property="ManagerUserName" column="ManagerID" /> <result property="ActualDuration" column="ActualDuration" type="float" /> </resultMap> <select id="ProjectNameExists" resultClass="boolean"> SELECT COUNT(Name) FROM project WHERE Name = #value# </select> <insert id="CreateNewProject" parameterClass="ProjectRecord"> INSERT INTO project (Name, Description, CreationDate, EstimateDuration, CompletionDate, CreatorID, ManagerID) VALUES (#Name#, #Description#, NOW(), #EstimateDuration#, #CompletionDate, typeHandler=DateTimeTypeHandler#, #CreatorUserName#, #ManagerUserName#) <selectKey property="ID" type="post" resultClass="int"> select LAST_INSERT_ID() as value </selectKey> </insert> <select id="GetProjectByID" parameterClass="integer" resultMap="project-result"> SELECT project.ProjectID as ProjectID, project.Name as Name, project.Description as Description, project.CreationDate as CreationDate, project.EstimateDuration as EstimateDuration, project.CompletionDate as CompletionDate, project.CreatorID as CreatorID, project.ManagerID as ManagerID, SUM(time_entry.Duration) as ActualDuration FROM project LEFT JOIN categories ON project.ProjectID = categories.ProjectID LEFT JOIN time_entry ON categories.CategoryID = time_entry.CategoryID WHERE project.ProjectID = #value# AND Disabled = 0 GROUP BY project.ProjectID ORDER BY project.Name </select> <select id="GetAllProjects" resultMap="project-result"> SELECT project.ProjectID as ProjectID, project.Name as Name, project.Description as Description, project.CreationDate as CreationDate, project.EstimateDuration as EstimateDuration, project.CompletionDate as CompletionDate, project.CreatorID as CreatorID, project.ManagerID as ManagerID, project.ManagerID as ManagerUserName, SUM(time_entry.Duration) as ActualDuration FROM project LEFT JOIN categories ON project.ProjectID = categories.ProjectID LEFT JOIN time_entry ON categories.CategoryID = time_entry.CategoryID WHERE Disabled = 0 GROUP BY project.ProjectID </select> <select id="GetAllProjectsOrdered" resultMap="project-result" extends="GetAllProjects"> ORDER BY $sort$ $order$ </select> <select id="GetProjectsByManagerName" resultMap="project-result"> SELECT project.ProjectID as ProjectID, project.Name as Name, project.Description as Description, project.CreationDate as CreationDate, project.EstimateDuration as EstimateDuration, project.CompletionDate as CompletionDate, project.CreatorID as CreatorID, project.ManagerID as ManagerID, SUM(time_entry.Duration) as ActualDuration FROM project LEFT JOIN categories ON project.ProjectID = categories.ProjectID LEFT JOIN time_entry ON categories.CategoryID = time_entry.CategoryID WHERE Disabled = 0 AND project.ManagerID = #value# GROUP BY project.ProjectID ORDER BY project.Name </select> <select id="GetProjectsByUserName" resultMap="project-result"> SELECT project.ProjectID as ProjectID, project.Name as Name, project.Description as Description, project.CreationDate as CreationDate, project.EstimateDuration as EstimateDuration, project.CompletionDate as CompletionDate, project.CreatorID as CreatorID, project.ManagerID as ManagerID, SUM(time_entry.Duration) as ActualDuration FROM project LEFT JOIN categories ON project.ProjectID = categories.ProjectID LEFT JOIN time_entry ON categories.CategoryID = time_entry.CategoryID, project_members WHERE project_members.ProjectID = project.ProjectID AND project_members.UserID = #value# AND project.Disabled = 0 GROUP BY project.ProjectID ORDER BY project.Name </select> <update id="DeleteProject" parameterClass="integer"> UPDATE project SET Disabled = 1 WHERE ProjectID = #value# </update> <select id="GetProjectMembers" parameterClass="integer"> SELECT UserID FROM project_members WHERE ProjectID = #value# </select> <insert id="AddUserToProject" parameterClass="array"> INSERT INTO project_members (UserID, ProjectID) VALUES(#username#, #project#) </insert> <delete id="RemoveUserFromProject" parameterClass="array"> DELETE FROM project_members WHERE ProjectID = #project# AND UserID = #username# </delete> <update id="UpdateProject" parameterClass="ProjectRecord"> UPDATE project SET CompletionDate = #CompletionDate, typeHandler=DateTimeTypeHandler#, Description = #Description#, EstimateDuration = #EstimateDuration#, ManagerId =#ManagerUserName#, Name = #Name# WHERE ProjectID = #ID# </update> </sqlMap>