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
|
|
|
|
}
|
|
}
|