public BuildPurgeRule UpdateProjectBuildPurgeRule(string id, string projectId, int? buildRetentionMinutes, List<string> environmentNameList, List<string> environmentIdList, List<string> machineNameList, List<string> machineIdList)
 {
     VerifyProjectRuleExists(id, projectId);
     var dbItem = new SqlBuildPurgeRule
     {
         Id = id,
         ProjectId = projectId,
         BuildRetentionMinutes = buildRetentionMinutes,
         UpdatedDateTimeUtc = DateTime.UtcNow,
         UpdatedByUserName = _userIdentity.UserName
     };
     dbItem.SetLists(environmentIdList, environmentNameList, machineIdList, machineNameList);
     using(var db = _sqlConnectionInfo.GetDB())
     {
         db.Update("DeployBuildPurgeRule", "ID", dbItem, new [] {"BuildRetentionMinutes", "UpdatedDateTimeUtc", "UpdatedByUserName", "EnvironmentIdListJson", "EnvironmentNameListJson", "MachineIdListJson", "MachineNameListJson"}  );
     }
     return this.GetProjectBuildPurgeRule(id, projectId);
 }
 public BuildPurgeRule CreateSystemBuildPurgeRule(int? buildRetentionMinutes, List<string> environmentNameList, List<string> environmentIdList, List<string> machineNameList, List<string> machineIdList)
 {
     var dbItem = new SqlBuildPurgeRule
     {
         ProjectId = null,
         BuildRetentionMinutes = buildRetentionMinutes,
         CreatedByUserName = _userIdentity.UserName,
         CreatedDateTimeUtc = DateTime.UtcNow,
         UpdatedByUserName = _userIdentity.UserName,
         UpdatedDateTimeUtc = DateTime.UtcNow
     };
     dbItem.SetLists(environmentIdList, environmentNameList, machineIdList, machineNameList);
     return this.InternalCreate(dbItem);
 }
 public BuildPurgeRule CreateProjectBuildPurgeRule(string projectId, int? buildRetentionMinutes, List<string> environmentNameList, List<string> environmentIdList, List<string> machineNameList, List<string> machineIdList)
 {
     if(string.IsNullOrEmpty(projectId))
     {
         throw new ArgumentNullException("Missing Project ID");
     }
     var dbItem = new SqlBuildPurgeRule
     {
         ProjectId = projectId,
         BuildRetentionMinutes = buildRetentionMinutes,
         CreatedByUserName = _userIdentity.UserName,
         CreatedDateTimeUtc = DateTime.UtcNow,
         UpdatedByUserName = _userIdentity.UserName,
         UpdatedDateTimeUtc = DateTime.UtcNow
     };
     dbItem.SetLists(environmentIdList, environmentNameList, machineIdList, machineNameList);
     return this.InternalCreate(dbItem);
 }
 private BuildPurgeRule InternalCreate(SqlBuildPurgeRule dbItem)
 {
     if(string.IsNullOrEmpty(dbItem.Id))
     {
         dbItem.Id = Guid.NewGuid().ToString();
     }
     using(var db = _sqlConnectionInfo.GetDB())
     {
         db.Insert("DeployBuildPurgeRule", "ID", dbItem);
     }
     if(string.IsNullOrEmpty(dbItem.ProjectId))
     {
         return this.GetSystemBuildPurgeRule(dbItem.Id);
     }
     else 
     {
         return this.GetProjectBuildPurgeRule(dbItem.Id, dbItem.ProjectId);
     }
 }