From ff6db29dff9b4778b97d2234d08cdcc10770562a Mon Sep 17 00:00:00 2001
From: wei <>
Date: Fri, 28 Jul 2006 06:26:05 +0000
Subject: Update time-tracker

---
 .../protected/App_Data/mysql-maps/category.xml     | 12 +--
 .../protected/App_Data/mysql-maps/projects.xml     | 30 +++----
 .../protected/App_Data/mysql-maps/reports.xml      | 94 ++++++++++++++++------
 .../protected/App_Data/mysql-maps/time-entry.xml   | 42 +++++-----
 4 files changed, 112 insertions(+), 66 deletions(-)

(limited to 'demos/time-tracker')

diff --git a/demos/time-tracker/protected/App_Data/mysql-maps/category.xml b/demos/time-tracker/protected/App_Data/mysql-maps/category.xml
index f2b7b21c..66b0ae5f 100644
--- a/demos/time-tracker/protected/App_Data/mysql-maps/category.xml
+++ b/demos/time-tracker/protected/App_Data/mysql-maps/category.xml
@@ -10,7 +10,7 @@
 	<result property="ActualDuration" column="ActualDuration" type="float" />
 </resultMap>
 
-<insert ID="AddNewCategory" parameterClass="Category">
+<insert id="AddNewCategory" parameterClass="Category">
 	INSERT INTO categories 
 	(Name, ProjectID, Abbreviation, EstimateDuration)
 	VALUES(#Name#, #ProjectID#, #Abbreviation#, #EstimateDuration#)
@@ -19,7 +19,7 @@
     </selectKey>
 </insert>
 
-<select ID="GetCategoryByID" parameterClass="integer" resultMap="category-result">
+<select id="GetCategoryByID" parameterClass="integer" resultMap="category-result">
 	SELECT 
 		categories.*,
 		sum(time_entry.Duration) as ActualDuration
@@ -34,7 +34,7 @@
 		categories.Name
 </select>
 
-<select ID="GetAllCategories" resultMap="category-result">
+<select id="GetAllCategories" resultMap="category-result">
 	SELECT 
 		categories.*,
 		sum(time_entry.Duration) as ActualDuration
@@ -51,7 +51,7 @@
 	DELETE FROM categories WHERE CategoryID = #value#
 </delete>
 
-<select ID="GetCategoriesByProjectID" resultMap="category-result">
+<select id="GetCategoriesByProjectID" resultMap="category-result">
 	SELECT 
 		categories.*,
 		sum(time_entry.Duration) as ActualDuration
@@ -66,7 +66,7 @@
 		categories.Name
 </select>
 
-<select ID="GetCategoryByNameInProject" parameterClass="array" resultMap="category-result">
+<select id="GetCategoryByNameInProject" parameterClass="array" resultMap="category-result">
 	SELECT 
 		categories.*,
 		sum(time_entry.Duration) as ActualDuration
@@ -80,7 +80,7 @@
 		categories.CategoryID
 </select>
 
-<update ID="UpdateCategory" parameterClass="Category">
+<update id="UpdateCategory" parameterClass="Category">
 	UPDATE categories SET
 		Abbreviation = #Abbreviation#,
 		EstimateDuration = #EstimateDuration#,
diff --git a/demos/time-tracker/protected/App_Data/mysql-maps/projects.xml b/demos/time-tracker/protected/App_Data/mysql-maps/projects.xml
index 8fa28b64..f087b864 100644
--- a/demos/time-tracker/protected/App_Data/mysql-maps/projects.xml
+++ b/demos/time-tracker/protected/App_Data/mysql-maps/projects.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" ?>
 <sqlMap>
 
-<resultMap ID="project-result" class="Project">
+<resultMap id="project-result" class="Project">
 	<result property="ID" column="ProjectID" type="integer"/>
 	<result property="Name" column="Name" />
 	<result property="Description" column="Description" />
@@ -13,11 +13,11 @@
 	<result property="ActualDuration" column="ActualDuration" type="float" />
 </resultMap>
 
-<select ID="ProjectNameExists" resultClass="boolean">
+<select id="ProjectNameExists" resultClass="boolean">
 	SELECT COUNT(Name) FROM project WHERE Name = #value#
 </select>
 
-<insert ID="CreateNewProject" parameterClass="Project">
+<insert id="CreateNewProject" parameterClass="Project">
 	INSERT INTO project
 	(Name, Description, CreationDate, EstimateDuration, CompletionDate, CreatorID, ManagerID)
 	VALUES
@@ -29,7 +29,7 @@
     </selectKey>
 </insert>
 
-<select ID="GetProjectByID" parameterClass="integer" resultMap="project-result">
+<select id="GetProjectByID" parameterClass="integer" resultMap="project-result">
 	SELECT 
 		project.ProjectID as ProjectID,
 		project.Name as Name,
@@ -52,7 +52,7 @@
 		project.Name
 </select>
 
-<select ID="GetAllProjects" resultMap="project-result">
+<select id="GetAllProjects" resultMap="project-result">
 	SELECT 
 		project.ProjectID as ProjectID,
 		project.Name as Name,
@@ -70,11 +70,13 @@
 		Disabled = 0
 	GROUP BY
 		project.ProjectID
-	ORDER BY
-		project.Name
 </select>
 
-<select ID="GetProjectsByManagerName" resultMap="project-result">
+<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,
@@ -97,7 +99,7 @@
 		project.Name
 </select>
 
-<select ID="GetProjectsByUserName" resultMap="project-result">
+<select id="GetProjectsByUserName" resultMap="project-result">
 	SELECT 
 		project.ProjectID as ProjectID,
 		project.Name as Name,
@@ -122,24 +124,24 @@
 		project.Name
 </select>
 
-<update ID="DeleteProject" parameterClass="integer">
+<update id="DeleteProject" parameterClass="integer">
 	UPDATE project SET Disabled = 1 WHERE ProjectID = #value#
 </update>
 
-<select ID="GetProjectMembers" parameterClass="integer">
+<select id="GetProjectMembers" parameterClass="integer">
 	SELECT UserID FROM project_members WHERE ProjectID = #value#
 </select>
 
-<insert ID="AddUserToProject" parameterClass="array">
+<insert id="AddUserToProject" parameterClass="array">
 	INSERT INTO project_members (UserID, ProjectID)
 	VALUES(#username#, #project#)
 </insert>
 
-<delete ID="RemoveUserFromProject" parameterClass="array">
+<delete id="RemoveUserFromProject" parameterClass="array">
 	DELETE FROM project_members WHERE ProjectID = #project# AND UserID = #username#
 </delete>
 
-<update ID="UpdateProject" parameterClass="Project">
+<update id="UpdateProject" parameterClass="Project">
 	UPDATE project
 	SET 
 		CompletionDate = #CompletionDate, typeHandler=DateTime#,
diff --git a/demos/time-tracker/protected/App_Data/mysql-maps/reports.xml b/demos/time-tracker/protected/App_Data/mysql-maps/reports.xml
index 83f922d0..4b537708 100644
--- a/demos/time-tracker/protected/App_Data/mysql-maps/reports.xml
+++ b/demos/time-tracker/protected/App_Data/mysql-maps/reports.xml
@@ -1,45 +1,87 @@
 <?xml version="1.0" encoding="utf-8" ?>
 <sqlMap>
 
-<select id="GetTimeReportByProjectID" resultClass="UserReport">
-	SELECT
-		categories.CategoryID as CategoryID,
-		time_entry.UserID as Username,
-		SUM(time_entry.Duration) as ActualDuration
-	FROM
-		time_entry, categories
-	WHERE
-		categories.CategoryID = time_entry.CategoryID
-	AND categories.ProjectID = #value#
-	GROUP BY
-		categories.ProjectID
-	ORDER BY
-		categories.ProjectID
-</select>
+<resultMap id="project-category-user" class="ProjectReport" GroupBy="ProjectID">
+	<result property="ProjectName" column="ProjectName" />
+	<result property="EstimateHours" column="ProjectEstimate" type="float"/>
+	<result property="EstimateCompletion" column="ProjectCompletion" type="DateTime" />
+	<result property="Categories" type="TList" resultMapping="category-user-report" />
+</resultMap>
 
-<select id="GetTimeReportByCategoryID" resultClass="UserReport">
+<resultMap id="category-user-report" class="CategoryReport" GroupBy="CategoryID" >
+	<result property="CategoryName" column="CategoryName" />
+	<result property="EstimateHours" column="CategoryEstimate" type="float" />
+	<result property="members" type="array" resultMapping="member-report" />
+</resultMap>
+
+<resultMap id="member-report" class="array">
+	<result property="username" column="Username" />
+	<result property="hours" column="ActualDuration" type="float" />
+</resultMap>
+
+<select id="GetTimeReportByProjectIDs" resultMap="project-category-user">
 	SELECT
+		categories.Name as CategoryName,
 		categories.CategoryID as CategoryID,
+		project.ProjectID as ProjectID,
+		categories.EstimateDuration as CategoryEstimate,
+		project.Name as ProjectName,
+		project.EstimateDuration as ProjectEstimate,
+		project.CompletionDate as ProjectCompletion,
 		time_entry.UserID as Username,
 		SUM(time_entry.Duration) as ActualDuration
 	FROM
-		time_entry, categories
+		project
+		LEFT JOIN categories ON categories.ProjectID = project.ProjectID
+		LEFT JOIN time_entry ON categories.CategoryID = time_entry.CategoryID
 	WHERE
-		categories.CategoryID = time_entry.CategoryID
-	AND categories.CategoryID = #value#
+		project.ProjectID IN ( $value$ )
 	GROUP BY
+		categories.ProjectID,
+		categories.CategoryID,
 		time_entry.UserID
 	ORDER BY
-		categories.CategoryID
-</select>	
+		project.ProjectID
+</select>
+
 
-<select id="GetTimeReportByUsername" resultClass="float">
+<resultMap id="time-entry-user-report" class="UserReport" GroupBy="Username">
+	<result property="Username" column="Username" />
+	<result property="Projects" resultMapping="project-user-report" />
+</resultMap>
+
+<resultMap id="project-user-report" class="UserProjectReport">
+	<result property="ProjectName" column="ProjectName" />
+	<result property="CategoryName" column="CategoryName" />
+	<result property="Duration" column="Duration" type="float" />
+	<result property="Description" column="Description" />
+	<result property="ReportDate" column="EntryDate" type="DateTime" />
+</resultMap>
+
+<select id="GetTimeReportByUsername" resultMap="time-entry-user-report">
 	SELECT
-		SUM(Duration) as TotalDuration
-	FROM
-		time_entry
+		users.Username,
+		project.Name as ProjectName,
+		categories.Name as CategoryName,
+		time_entry.Duration,
+		time_entry.Description,
+		time_entry.EntryDate
+	FROM 
+   		users 
+   		LEFT JOIN time_entry ON time_entry.UserID = users.Username
+			AND time_entry.EntryDate BETWEEN 
+				#startDate, typeHandler=DateTime# AND 
+				#endDate, typeHandler=DateTime#
+   		LEFT JOIN categories ON time_entry.CategoryID = categories.CategoryID
+   		LEFT JOIN project ON categories.ProjectID = project.ProjectID 
+			AND project.ProjectID in ($projects$) 
 	WHERE
-		UserID = #value#
+   		users.Username in ($members$)
+	ORDER BY
+  		users.Username ASC,
+  		time_entry.EntryDate ASC,
+  		project.Name ASC,
+  		categories.Name ASC
 </select>
 
 </sqlMap>
\ No newline at end of file
diff --git a/demos/time-tracker/protected/App_Data/mysql-maps/time-entry.xml b/demos/time-tracker/protected/App_Data/mysql-maps/time-entry.xml
index 2708a6c5..841bd03e 100644
--- a/demos/time-tracker/protected/App_Data/mysql-maps/time-entry.xml
+++ b/demos/time-tracker/protected/App_Data/mysql-maps/time-entry.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" ?>
 <sqlMap>
 
-<insert ID="AddNewTimeEntry" parameterClass="TimeEntry">
+<insert id="AddNewTimeEntry" parameterClass="TimeEntry">
 	INSERT INTO time_entry(
 		EntryCreated, 
 		Duration, 
@@ -36,7 +36,23 @@
 	<result property="Username" column="UserID" />
 </resultMap>
 
-<select ID="GetTimeEntryByID" resultMap="time-entry-result">
+<resultMap id="time-entry-category-result" class="TimeEntry">
+	<result property="ID" column="EntryID" type="integer" />
+	<result property="DateCreated" column="EntryCreated" typeHandler="DateTime" />
+	<result property="Duration" column="Duration" type="float" />
+	<result property="Description" column="Description" />
+	<result property="Category" resultMapping="entry-category" />
+	<result property="ReportDate" column="EntryDate" typeHandler="DateTime" />
+	<result property="CreatorUserName" column="CreatorID" />
+	<result property="Username" column="UserID" />
+</resultMap>
+
+<resultMap id="entry-category" class="Category">
+	<result property="ID" column="CategoryID" />
+	<result property="Name" column="CategoryName" />
+</resultMap>
+
+<select id="GetTimeEntryByID" resultMap="time-entry-result">
 	SELECT 
 		*
 	FROM 
@@ -49,9 +65,10 @@
 	DELETE FROM time_entry WHERE EntryID = #value#
 </delete>
 
-<select ID="GetAllTimeEntriesByProjectIdAndUser" resultMap="time-entry-result">
+<select id="GetAllTimeEntriesByProjectIdAndUser" resultMap="time-entry-category-result">
 	SELECT 
-		time_entry.*
+		time_entry.*,
+		categories.Name as CategoryName
 	FROM
 		time_entry, categories
 	WHERE
@@ -62,7 +79,7 @@
 		EntryID ASC
 </select>
 
-<update ID="UpdateTimeEntry" parameterClass="TimeEntry">
+<update id="UpdateTimeEntry" parameterClass="TimeEntry">
 	UPDATE time_entry SET
 		Duration = #Duration#,
 		Description = #Description#,
@@ -73,19 +90,4 @@
 		EntryID = #ID#
 </update>
 
-<select id="GetTimeEntriesByDate" parameterClass="array" resultMap="time-entry-result">
-	SELECT 
-		time_entry.*
-	FROM
-		time_entry
-	WHERE
-			time_entry.UserID = #username#
-	AND
-		time_entry.EntryDate BETWEEN 
-			#startDate, typeHandler=DateTime# and 
-			#endDate, typeHandler=DateTime#
-	ORDER BY 
-		EntryID ASC
-</select>
-
 </sqlMap>
\ No newline at end of file
-- 
cgit v1.2.3