private Guid Post(ContractCloseOutViewModel viewModel) { Guid currentUser = UserHelper.CurrentUserGuid(HttpContext); Guid createdBy = UserHelper.CurrentUserGuid(HttpContext); Guid updatedBy = UserHelper.CurrentUserGuid(HttpContext); DateTime createdOn = CurrentDateTimeHelper.GetCurrentDateTime(); DateTime updatedOn = CurrentDateTimeHelper.GetCurrentDateTime(); var modelData = new List <QuestionaryAnswerViewModel>(); var modelSubData = new List <QuestionaryAnswerViewModel>(); var projectManager = _configuration.GetSection("ContractRepresentatives").GetValue <string>("ProjectManager"); var contractRepresentative = _configuration.GetSection("ContractRepresentatives").GetValue <string>("ContracRepresentative"); var accountingRepresentative = _configuration.GetSection("ContractRepresentatives").GetValue <string>("AccountRepresentative"); if (viewModel.ProjectManagerQuestions != null && viewModel.RepresentativeType == projectManager) { modelData.AddRange(viewModel.ProjectManagerQuestions.Where(x => !string.IsNullOrEmpty(x.Answer))); } if (viewModel.ContractRepresentativeQuestions != null && viewModel.RepresentativeType == contractRepresentative) { modelData.AddRange(viewModel.ContractRepresentativeQuestions.Where(x => !string.IsNullOrEmpty(x.Answer))); } if (viewModel.AccountingRepresentativeQuestions != null && viewModel.RepresentativeType == accountingRepresentative) { modelData.AddRange(viewModel.AccountingRepresentativeQuestions.Where(x => !string.IsNullOrEmpty(x.Answer))); } if (viewModel.SubQuestions != null && viewModel.RepresentativeType == projectManager) { modelSubData.AddRange(viewModel.SubQuestions.Where(x => !string.IsNullOrEmpty(x.Answer))); } foreach (var item in modelData) { string approvalStatus = ""; if (item.Answer == "No") { if (item.OrderNumber == 1 && item.RepresentativeType == projectManager) { approvalStatus = ApprovalStatus.APPROVED.ToString(); modelSubData = null; } else { approvalStatus = ApprovalStatus.UNAPPROVED.ToString(); } } else { approvalStatus = ApprovalStatus.APPROVED.ToString(); } var contractCloseApproval = _contractCloseApprovalService.GetByNormalizedValue(approvalStatus); var model = new QuestionaireUserAnswer { Answer = item.Answer, ContractCloseApprovalGuid = contractCloseApproval.ContractCloseApprovalGuid, ContractGuid = viewModel.ContractGuid, ManagerUserGuid = currentUser, QuestionaireMasterGuid = item.QuestionaireMasterGuid, Questions = item.Questions, RepresentativeType = item.RepresentativeType, Status = contractCloseApproval.NormalizedValue, Notes = item.Notes, CreatedOn = createdOn, CreatedBy = createdBy, UpdatedBy = updatedBy, UpdatedOn = updatedOn }; _questionaireUserAnswerService.Add(model); } if (modelSubData != null) { if (modelSubData.Count() > 0) { foreach (var item in modelSubData.Where(x => x.Answer != null)) { string approvalStatus = ""; if (item.Answer == "No") { approvalStatus = ApprovalStatus.UNAPPROVED.ToString(); } else { approvalStatus = ApprovalStatus.APPROVED.ToString(); } var contractCloseApproval = _contractCloseApprovalService.GetByNormalizedValue(approvalStatus); var model = new QuestionaireUserAnswer { Answer = item.Answer, ContractCloseApprovalGuid = contractCloseApproval.ContractCloseApprovalGuid, ContractGuid = viewModel.ContractGuid, ManagerUserGuid = currentUser, QuestionaireMasterGuid = item.QuestionaireMasterGuid, Questions = item.Questions, RepresentativeType = item.RepresentativeType, Status = contractCloseApproval.NormalizedValue, CreatedOn = createdOn, CreatedBy = createdBy, UpdatedBy = updatedBy, UpdatedOn = updatedOn }; _questionaireUserAnswerService.Add(model); } } } //For Notification AddNotification(viewModel); var savedAnswers = _questionaireUserAnswerService.GetByContractGuid(viewModel.ContractGuid); var resourceid = Guid.Empty; if (savedAnswers.Count() > 0) { if (viewModel.RepresentativeType == projectManager) { var projectManagerData = savedAnswers.FirstOrDefault(x => x.RepresentativeType == projectManager); resourceid = projectManagerData != null ? projectManagerData.QuestionaireUserAnswerGuid : Guid.Empty; Guid[] ids = new Guid[1]; ids[0] = viewModel.ContractGuid; _contractService.Disable(ids); } else if (viewModel.RepresentativeType == contractRepresentative) { var contractRepresentativeData = savedAnswers.FirstOrDefault(x => x.RepresentativeType == contractRepresentative); resourceid = contractRepresentativeData != null ? contractRepresentativeData.QuestionaireUserAnswerGuid : Guid.Empty; } else if (viewModel.RepresentativeType == accountingRepresentative) { var accountingRepresentativeData = savedAnswers.FirstOrDefault(x => x.RepresentativeType == accountingRepresentative); if (accountingRepresentativeData != null) { resourceid = accountingRepresentativeData.QuestionaireUserAnswerGuid; _contractService.CloseContractStatus(viewModel.ContractGuid); } } } return(resourceid); }