//public SigmaResultType MultiProject(List<TypeProject> listObj) //{ // TransactionScope scope = null; // SigmaResultType result = new SigmaResultType(); // // Get connection string // string connStr = ConnStrHelper.getDbConnString(); // using (scope = new TransactionScope(TransactionScopeOption.RequiresNew)) // { // foreach (TypeProject anObj in listObj) // { // switch (anObj.SigmaOperation) // { // case "C": // AddProject(anObj); // break; // case "U": // UpdateProject(anObj); // break; // case "D": // RemoveProject(anObj); // break; // } // } // scope.Complete(); // } // return result; //} public SigmaResultType AddProjectInfo(TypeProject objProject) { TypeUserInfo userinfo = AuthMgr.GetUserInfo(); TransactionScope scope = null; SigmaResultType result = new SigmaResultType(); SigmaResultType resultProject = new SigmaResultType(); bool isDiscipline = true; bool isAuthentication = true; // Project Closed if (objProject.IsActive.ToUpper().Equals("N")) { if (userinfo.SigmaUserId.ToUpper().Equals("ADMIN")) { isAuthentication = true; } else { isAuthentication = false; } } if (objProject.ProjectDiscipline.Count == 0) { isDiscipline = false; } if (!(string.IsNullOrEmpty(objProject.ProjectName)) && !(string.IsNullOrEmpty(objProject.ProjectNumber)) && !(string.IsNullOrEmpty(objProject.ProjectManagerId)) //&& !(string.IsNullOrEmpty(objProject.ClientCompanyId)) && !(string.IsNullOrEmpty(objProject.ClientProjectId)) && !(string.IsNullOrEmpty(objProject.ClientProjectName)) && isDiscipline && isAuthentication ) { using (scope = new TransactionScope(TransactionScopeOption.RequiresNew)) { if (objProject.SigmaOperation == SigmaOperation.INSERT) { resultProject = AddProject(objProject); objProject.ProjectId = resultProject.ScalarValue; objProject.ProjectDiscipline.ForEach(item => item.ProjectId = objProject.ProjectId); objProject.ProjectSubcontractor.ForEach(item => item.ProjectId = objProject.ProjectId); } else if (objProject.SigmaOperation == SigmaOperation.UPDATE) { resultProject = UpdateProject(objProject); objProject.ProjectDiscipline.ForEach(item => item.ProjectId = objProject.ProjectId); objProject.ProjectSubcontractor.ForEach(item => item.ProjectId = objProject.ProjectId); // Delete ProjectDiscipline && ProjectSubcontractor if (resultProject.IsSuccessful) { RemoveProjectDiscipline(objProject); RemoveProjectSubcontractor(objProject); } } if (resultProject.IsSuccessful) { // ProjectDiscipline if (objProject.ProjectDiscipline.Count > 0) { foreach (var item in objProject.ProjectDiscipline) { switch (item.SigmaOperation) { case SigmaOperation.INSERT: AddProjectDiscipline(item); break; } } } // ProjectSubcontractor if (objProject.ProjectSubcontractor.Count > 0) { foreach (var item in objProject.ProjectSubcontractor) { switch (item.SigmaOperation) { case SigmaOperation.INSERT: AddProjectSubcontractor(item); break; } } } // Project Manager #region Project Manager if (!(string.IsNullOrEmpty(objProject.ProjectManagerId.ToString()))) { SigmaUserMgr sigmaUserMgr = new SigmaUserMgr(); SigmaRoleMgr sigmaRoleMgr = new SigmaRoleMgr(); ProjectUserDisciplineMgr projectUserDisciplineMgr = new ProjectUserDisciplineMgr(); TypeSigmaUserSigmaRole userRole = new TypeSigmaUserSigmaRole(); TypeProjectUserDiscipline userDiscipline = new TypeProjectUserDiscipline(); DataSet sigmaRoleDataSet = null; DataSet sigmaUserSigmaRoleDataSet = null; // Get SigmaRoleId sigmaRoleDataSet = sigmaRoleMgr.GetSigmaRoleByName("Project Manager"); var sigmaRole = sigmaRoleDataSet.Tables[0].Rows[0]["SigmaRoleId"]; // Get SigmaUserSigmaRole //sigmaUserSigmaRole = projectUserDisciplineMgr. // Set SigmaUserSigmaRole userRole.SigmaRoleId = int.Parse(sigmaRole.ToString()); userRole.SigmaUserId = objProject.ProjectManagerId; userRole.ProjectId = objProject.ProjectId; userRole.CreatedBy = userinfo.SigmaUserId; if (objProject.SigmaOperation == SigmaOperation.INSERT) { sigmaUserMgr.AddSigmaUserSigmaRoleForProject(userRole); // ProjectUserDiscipline if (objProject.ProjectDiscipline.Count > 0) { foreach (var item in objProject.ProjectDiscipline) { TypeProjectUserDiscipline projectUserDiscipline = new TypeProjectUserDiscipline(); projectUserDiscipline.ProjectId = objProject.ProjectId; projectUserDiscipline.SigmaUserId = objProject.ProjectManagerId; projectUserDiscipline.DisciplineCode = item.DisciplineCode; switch (item.SigmaOperation) { case SigmaOperation.INSERT: projectUserDisciplineMgr.AddProjectUserDiscipline(projectUserDiscipline); break; } } } } if (objProject.SigmaOperation == SigmaOperation.UPDATE) { //sigmaUserSigmaRoleDataSet = sigmaUserMgr.GetSigmaUserSigmaRoleBySigmaRoleId(objProject.ProjectId, int.Parse(sigmaRole.ToString())); //var sigmaUserSigmaRole = sigmaUserSigmaRoleDataSet.Tables[0].Rows[0]["SigmaUserId"]; // 1. SigmaUserSigmaRole Delete sigmaUserMgr.RemoveSigmaUserSigmaRoleByProjectId(userRole); // 2. SigmaUserSigmaRole Insert sigmaUserMgr.AddSigmaUserSigmaRole(userRole); // 3. ProjectUserDiscipline Delete userDiscipline.ProjectId = objProject.ProjectId; userDiscipline.SigmaUserId = userRole.SigmaUserId; userDiscipline.DisciplineCode = "ALL"; projectUserDisciplineMgr.RemoveProjectUserDiscipline(userDiscipline); // 4. ProjectUserDiscipline Insert foreach (var item in objProject.ProjectDiscipline) { TypeProjectUserDiscipline projectUserDiscipline = new TypeProjectUserDiscipline(); projectUserDiscipline.ProjectId = objProject.ProjectId; projectUserDiscipline.SigmaUserId = objProject.ProjectManagerId; projectUserDiscipline.DisciplineCode = item.DisciplineCode; switch (item.SigmaOperation) { case SigmaOperation.INSERT: projectUserDisciplineMgr.AddProjectUserDiscipline(projectUserDiscipline); break; } } // 5. ProjectUserDiscipline Delete(except ProjectManager) projectUserDisciplineMgr.RemoveProjectUserDisciplineByProjectInfo(objProject.ProjectId); } } #endregion Project Manager } result.AffectedRow = resultProject.AffectedRow; result.ScalarValue = resultProject.ScalarValue; result.IsSuccessful = true; scope.Complete(); } } else { result.AffectedRow = -1; result.ErrorCode = "ProjectSetting0001"; result.ErrorMessage = "Validation"; result.IsSuccessful = false; } return result; }