115 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			115 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using System;
 | |
| using System.Collections.Generic;
 | |
| using System.Text;
 | |
| using System.Data;
 | |
| using System.Data.SqlClient;
 | |
| using Csla;
 | |
| using Csla.Validation;
 | |
| using Csla.Data;
 | |
| using System.Reflection;
 | |
| 
 | |
| namespace ProjectTracker.Library
 | |
| {
 | |
|   internal interface IHoldRoles
 | |
|   {
 | |
|     int Role { get; set;}
 | |
|   }
 | |
| 
 | |
|   internal static class Assignment
 | |
|   {
 | |
| 
 | |
|     #region Business Methods
 | |
| 
 | |
|     public static DateTime GetDefaultAssignedDate()
 | |
|     {
 | |
|       return DateTime.Today;
 | |
|     }
 | |
| 
 | |
|     #endregion
 | |
| 
 | |
|     #region Validation Rules
 | |
| 
 | |
|     /// <summary>
 | |
|     /// Ensure the Role property value exists
 | |
|     /// in RoleList
 | |
|     /// </summary>
 | |
|     public static bool ValidRole(object target, RuleArgs e)
 | |
|     {
 | |
|       int role = ((IHoldRoles)target).Role;
 | |
| 
 | |
|       if (RoleList.GetList().ContainsKey(role))
 | |
|         return true;
 | |
|       else
 | |
|       {
 | |
|         e.Description = "Role must be in RoleList";
 | |
|         return false;
 | |
|       }
 | |
|     }
 | |
| 
 | |
|     #endregion
 | |
| 
 | |
|     #region Data Access
 | |
| 
 | |
|     public static byte[] AddAssignment(
 | |
|       SqlConnection cn, Guid projectId, int resourceId, 
 | |
|       SmartDate assigned, int role)
 | |
|     {
 | |
|       using (SqlCommand cm = cn.CreateCommand())
 | |
|       {
 | |
|         cm.CommandText = "addAssignment";
 | |
|         return DoAddUpdate(
 | |
|           cm, projectId, resourceId, assigned, role);
 | |
|       }
 | |
|     }
 | |
| 
 | |
|     public static byte[] UpdateAssignment(SqlConnection cn,
 | |
|       Guid projectId, int resourceId, SmartDate assigned, 
 | |
|       int newRole, byte[] timestamp)
 | |
|     {
 | |
|       using (SqlCommand cm = cn.CreateCommand())
 | |
|       {
 | |
|         cm.CommandText = "updateAssignment";
 | |
|         cm.Parameters.AddWithValue("@lastChanged", timestamp);
 | |
|         return DoAddUpdate(
 | |
|           cm, projectId, resourceId, assigned, newRole);
 | |
|       }
 | |
|     }
 | |
| 
 | |
|     private static byte[] DoAddUpdate(SqlCommand cm,
 | |
|       Guid projectId, int resourceId, SmartDate assigned,
 | |
|       int newRole)
 | |
|     {
 | |
|       cm.CommandType = CommandType.StoredProcedure;
 | |
|       cm.Parameters.AddWithValue("@projectId", projectId);
 | |
|       cm.Parameters.AddWithValue("@resourceId", resourceId);
 | |
|       cm.Parameters.AddWithValue("@assigned", assigned.DBValue);
 | |
|       cm.Parameters.AddWithValue("@role", newRole);
 | |
|       SqlParameter param =
 | |
|         new SqlParameter("@newLastChanged", SqlDbType.Timestamp);
 | |
|       param.Direction = ParameterDirection.Output;
 | |
|       cm.Parameters.Add(param);
 | |
| 
 | |
|       cm.ExecuteNonQuery();
 | |
| 
 | |
|       return (byte[])cm.Parameters["@newLastChanged"].Value;
 | |
|     }
 | |
| 
 | |
|     public static void RemoveAssignment(
 | |
|       SqlConnection cn, Guid projectId, int resourceId)
 | |
|     {
 | |
|       using (SqlCommand cm = cn.CreateCommand())
 | |
|       {
 | |
|         cm.CommandType = CommandType.StoredProcedure;
 | |
|         cm.CommandText = "deleteAssignment";
 | |
|         cm.Parameters.AddWithValue("@projectId", projectId);
 | |
|         cm.Parameters.AddWithValue("@resourceId", resourceId);
 | |
| 
 | |
|         cm.ExecuteNonQuery();
 | |
|       }
 | |
|     }
 | |
| 
 | |
|     #endregion
 | |
| 
 | |
|   }
 | |
| }
 |