private DMQuestionaire InsertQuestionaire(DMQuestionaire questionaire, Guid userGuid, Guid contractGuid, string question) { questionaireUserAnswerEntity = new QuestionaireUserAnswer(); var questionaireMaster = _questionaireMasterService.GetQuestionaireByQuestion(question); if (questionaireMaster != null) { questionaireUserAnswerEntity.QuestionaireUserAnswerGuid = Guid.NewGuid(); questionaireUserAnswerEntity.QuestionaireMasterGuid = questionaireMaster.QuestionaireMasterGuid; questionaireUserAnswerEntity.Questions = question; questionaireUserAnswerEntity.Answer = questionaire.Answer; questionaireUserAnswerEntity.CreatedBy = userGuid; questionaireUserAnswerEntity.UpdatedBy = userGuid; questionaireUserAnswerEntity.CreatedOn = DateTime.UtcNow; questionaireUserAnswerEntity.UpdatedOn = DateTime.UtcNow; questionaireUserAnswerEntity.ContractGuid = contractGuid; _questionaireUserAnswerService.Add(questionaireUserAnswerEntity); questionaire.ImportStatus = ImportStatus.Success.ToString(); questionaire.Reason = $"Questionaire for project number {questionaire.ProjectNumber} has been added successfully"; } else { questionaire.ImportStatus = ImportStatus.Fail.ToString(); questionaire.Reason += $"Unable to add questionaire for project number {questionaire.ProjectNumber} on {question}."; } return(questionaire); }
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); }