public void Add(QuestionaireUserAnswer answer)
        {
            string sql    = $@"SELECT count(*)
                            from QuestionaireUserAnswer
                            where ContractGuid= @ContractGuid and QuestionaireMasterGuid =@QuestionaireMasterGuid ";
            var    result = _context.Connection.QueryFirstOrDefault <int>(sql,
                                                                          new
            {
                ContractGuid           = answer.ContractGuid,
                QuestionaireMasterGuid = answer.QuestionaireMasterGuid
            });

            if (result == 0)
            {
                string insertQuery = $@"INSERT INTO [dbo].[QuestionaireUserAnswer]
                                                                   ( 
                                                                        ContractGuid,
                                                                        QuestionaireMasterGuid	   ,
                                                                        ManagerUserGuid	   ,
                                                                        ContractCloseApprovalGuid  ,			       
                                                                        RepresentativeType  ,			       
                                                                        Questions  ,			       
                                                                        Answer  ,			       
                                                                        Notes  ,			       
                                                                        CreatedBy  ,			       
                                                                        UpdatedBy  ,			       
                                                                        CreatedOn  ,			       
                                                                        UpdatedOn  ,			       
                                                                        Status                     
                                                                    )
                                  VALUES (
                                                                        @ContractGuid	    ,
                                                                        @QuestionaireMasterGuid	    ,
                                                                        @ManagerUserGuid	    ,
                                                                        @ContractCloseApprovalGuid	,			                                             
                                                                        @RepresentativeType	,			                                             
                                                                        @Questions	,			                                             
                                                                        @Answer	,			                                             
                                                                        @Notes	,			                                             
                                                                        @CreatedBy	,			                                             
                                                                        @UpdatedBy	,			                                             
                                                                        @CreatedOn	,			                                             
                                                                        @UpdatedOn	,			                                             
                                                                        @Status				                                             
                                                                )";
                _context.Connection.Execute(insertQuery, answer);
            }
            else
            {
                Update(answer);
            }
        }
        public void Update(QuestionaireUserAnswer answer)
        {
            string updateQuery = @"update QuestionaireUserAnswer set 
                                                                        ContractGuid              =@ContractGuid,
                                                                        QuestionaireMasterGuid	  =@QuestionaireMasterGuid,	
                                                                        ManagerUserGuid	          =@ManagerUserGuid,
                                                                        ContractCloseApprovalGuid =@ContractCloseApprovalGuid,       
                                                                        RepresentativeType		  =@RepresentativeType,		    
                                                                        Questions                 =@Questions,               
                                                                        Answer			          =@Answer,			       
                                                                        Notes			          =@Notes,			       
                                                                        CreatedBy                 =@CreatedBy,             
                                                                        UpdatedBy		          =@UpdatedBy,		       
                                                                        CreatedOn                 =@CreatedOn,               
                                                                        UpdatedOn                 =@UpdatedOn,             
                                                                        Status                    =@Status          
                                                                where QuestionaireMasterGuid = @QuestionaireMasterGuid ";

            _context.Connection.Execute(updateQuery, answer);
        }
        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);
        }
Example #4
0
 public void Add(QuestionaireUserAnswer answer)
 {
     _questionaireUserAnswerRepository.Add(answer);
 }