Example #1
0
        public IActionResult Detail(Guid id)
        {
            try
            {
                var model         = _revenueRecognitionService.GetInfoForDetailPage(id);
                var basicContract = _contractRefactorService.GetBasicContractById(model.ContractGuid);
                var keyPersonnel  = _contractRefactorService.GetKeyPersonnelByContractGuid(model.ContractGuid);
                var viewModel     = _mapper.Map <RevenueRecognitionViewModel>(model);
                if (viewModel != null)
                {
                    if (viewModel.IsFile)
                    {
                        var user = _userService.GetUserByUserGuid(viewModel.UpdatedBy);
                        viewModel.UpdatedByName = user.DisplayName;
                        var fileDetails = _contractRefactorService.GetFileByResourceGuid(viewModel.RevenueRecognizationGuid, EnumGlobal.ResourceType.RevenueRecognition.ToString());
                        if (fileDetails != null)
                        {
                            viewModel.ContractResourceFileGuid = fileDetails.ContractResourceFileGuid;
                        }
                        return(PartialView(viewModel));
                    }
                }
                var extensionEntityList      = _revenueRecognitionService.GetContractExtension(viewModel.RevenueRecognizationGuid);
                var contractExtensionMapping = _mapper.Map <List <RevenueContractExtensionViewModel> >(extensionEntityList);
                viewModel.ListContractExtension = contractExtensionMapping;
                var obligationEntityList   = _revenueRecognitionService.GetPerformanceObligation(viewModel.RevenueRecognizationGuid);
                var obligationModelMapping = _mapper.Map <List <RevenuePerformanceObligationViewModel> >(obligationEntityList);
                viewModel.ListRevenuePerformanceObligation = obligationModelMapping;
                if (!string.IsNullOrEmpty(viewModel.IdentityContract))
                {
                    viewModel.IdentityContract = _resourceAttributeValueService.GetResourceAttributeValueByValue(viewModel.IdentityContract).Name;
                }
                if (!string.IsNullOrEmpty(viewModel.ContractType))
                {
                    viewModel.ContractType = _resourceAttributeValueService.GetResourceAttributeValueByValue(viewModel.ContractType).Name;
                }
                var exportDetail = GetContractDetailForExport(model.ContractGuid);

                viewModel.BasicContractInfoModel       = exportDetail.BasicContractInfoModel;
                viewModel.AccountingRepresentativeName = exportDetail.AccountingRepresentativeName;
                viewModel.ProjectManagerName           = exportDetail.ProjectManagerName;

                return(PartialView(viewModel));
            }
            catch (Exception ex)
            {
                ModelState.AddModelError("", ex.Message);
                return(BadRequest(ModelState));
            }
        }
        private bool AddNotificationMessage(ContractNotificationModel contractModel)
        {
            try
            {
                var     notificationModel            = new GenericNotificationViewModel();
                var     notificationTemplatesDetails = new NotificationTemplatesDetail();
                var     userList        = new List <User>();
                var     receiverInfo    = new User();
                Guid?   receiverGuid    = Guid.Empty;
                decimal thresholdAmount = 0.00M;

                notificationModel.ResourceId              = contractModel.ContractGuid;
                notificationModel.RedirectUrl             = _configuration.GetSection("SiteUrl").Value + ("/contract/Details/" + contractModel.ContractGuid);
                notificationModel.NotificationTemplateKey = contractModel.key;
                notificationModel.CurrentDate             = CurrentDateTimeHelper.GetCurrentDateTime();
                notificationModel.CurrentUserGuid         = UserHelper.CurrentUserGuid(HttpContext);
                notificationModel.SendEmail = true;


                var keyPersonnels = _contractService.GetKeyPersonnelByContractGuid(contractModel.ContractGuid);

                if (keyPersonnels?.Any() == true)
                {
                    receiverGuid = keyPersonnels.FirstOrDefault(x => x.UserRole == ContractUserRole._contractRepresentative)?.UserGuid;
                    if (receiverGuid != Guid.Empty)
                    {
                        thresholdAmount = RevenueRecognitionHelper.GetAmountByContractType(_configuration, contractModel.ContractType);

                        receiverInfo = _userService.GetUserByUserGuid(receiverGuid ?? Guid.Empty);

                        var    resourcevalue = _resourceAttributeValueService.GetResourceAttributeValueByValue(contractModel.ContractType);
                        string contracttype  = string.Empty;
                        if (resourcevalue != null)
                        {
                            contracttype = resourcevalue.Name;
                        }

                        if (receiverInfo != null)
                        {
                            userList.Add(receiverInfo);
                            notificationModel.IndividualRecipients = userList;
                        }

                        var keyList = "<ul>";
                        keyList += "<li>" + receiverInfo.DisplayName + " (" + receiverInfo.JobTitle + ")" + "</li>";
                        StringBuilder additionalUser = new StringBuilder(keyList);

                        notificationTemplatesDetails.ContractNumber   = contractModel.ContractNumber;
                        notificationTemplatesDetails.Title            = contractModel.ContractTitle;
                        notificationTemplatesDetails.ContractType     = contracttype;
                        notificationTemplatesDetails.ContractTitle    = contractModel.ContractTitle;
                        notificationTemplatesDetails.ProjectNumber    = contractModel.ProjectNumber;
                        notificationTemplatesDetails.AdditionalUser   = additionalUser.ToString();
                        notificationTemplatesDetails.ThresholdAmount  = thresholdAmount;
                        notificationTemplatesDetails.Status           = "";
                        notificationModel.NotificationTemplatesDetail = notificationTemplatesDetails;
                        _genericNotificationService.AddNotificationMessage(notificationModel);
                        return(true);
                    }
                }
                return(false);
            }
            catch (Exception ex)
            {
                var userGuid = UserHelper.CurrentUserGuid(HttpContext);
                EventLogHelper.Error(_eventLogger, new EventLog
                {
                    EventGuid   = Guid.NewGuid(),
                    Action      = "Index",
                    Application = "ESS",
                    EventDate   = DateTime.UtcNow,
                    Message     = ex.Message,
                    Resource    = ResourceType.Contract.ToString(),
                    StackTrace  = ex.StackTrace,
                    UserGuid    = userGuid
                });
                return(false);
            }
        }
Example #3
0
        public void SendEmailToRespectivePersonnel(int status, Guid contractGuid)
        {
            var jobRequestEntity = _jobRequestService.GetDetailsForJobRequestById(contractGuid);
            var model            = ContractsMapper.MapJobRequestToViewModel(jobRequestEntity);
            var keyPersonnel     = _contractRefactorService.GetKeyPersonnelByContractGuid(contractGuid);

            var param = new { id = contractGuid };
            var link  = RouteUrlHelper.GetAbsoluteAction(_urlHelper, "JobRequest", "Detail", param);
            //var urlLink = new UrlHelper(ControllerContext.RequestContext);
            JobRequestEmailModel emailModel = new JobRequestEmailModel();

            emailModel.ContractNumber = model.BasicContractInfo.ContractNumber;
            emailModel.ProjectNumber  = model.BasicContractInfo.ProjectNumber;
            emailModel.AwardingAgency = model.CustomerInformation.AwardingAgencyOfficeName;
            emailModel.FundingAgency  = model.CustomerInformation.FundingAgencyOfficeName;
            emailModel.ClickableUrl   = link;
            emailModel.Status         = "In Progress";
            string emailTo       = "*****@*****.**";
            string recipientName = string.Empty;
            string subject       = string.Empty;

            Guid notifyTo = UserHelper.CurrentUserGuid(HttpContext);

            var notificationTemplate = _notificationTemplatesService.GetByKey("jobrequest-notify");
            var content  = string.Empty;
            var template = string.Empty;

            if (notificationTemplate != null)
            {
                template = notificationTemplate.Message;
            }



            //for filtering the representative to send email
            switch (status)
            {
            case (int)JobRequestStatus.ContractRepresentative:
                var controlRepresentative = model.KeyPersonnel.ProjectControls;
                if (controlRepresentative != null)
                {
                    notifyTo = controlRepresentative;
                }
                var projectUser = _userService.GetUserByUserGuid(notifyTo);
                if (projectUser != null)
                {
                    //emailTo = contractUser.WorkEmail;
                    recipientName            = projectUser.DisplayName;
                    emailModel.ReceipentName = recipientName;
                    subject = "A new Job Request Form has been submitted for contract: " + emailModel.ContractNumber;
                }
                var conManager = _userService.GetUserByUserGuid(model.KeyPersonnel.ProjectManager);
                emailModel.NotifiedTo = conManager.Firstname + " " + conManager.Lastname;
                var submittedBy = _userService.GetUserByUserGuid(model.KeyPersonnel.ContractRepresentative);
                emailModel.SubmittedBy = submittedBy.Firstname + " " + submittedBy.Lastname;
                break;

            case (int)JobRequestStatus.ProjectControl:
                var projectRepresentative = model.KeyPersonnel.ProjectManager;
                if (projectRepresentative != null)
                {
                    notifyTo = projectRepresentative;
                }
                var managerUser = _userService.GetUserByUserGuid(notifyTo);
                if (managerUser != null)
                {
                    //emailTo = controlUser.WorkEmail;
                    recipientName            = managerUser.DisplayName;
                    emailModel.ReceipentName = recipientName;
                    subject = "A new Job Request Form has been submitted for contract: " + emailModel.ContractNumber;
                }
                var manager = _userService.GetUserByUserGuid(model.KeyPersonnel.ProjectManager);
                emailModel.NotifiedTo = manager.Firstname + " " + manager.Lastname;

                var submittedByProject = _userService.GetUserByUserGuid(model.KeyPersonnel.ProjectControls);
                emailModel.SubmittedBy = submittedByProject.Firstname + " " + submittedByProject.Lastname;
                break;

            case (int)JobRequestStatus.ProjectManager:
                var managerRepresentative = model.KeyPersonnel.AccountingRepresentative;
                if (managerRepresentative != null)
                {
                    notifyTo = managerRepresentative;
                }
                var accountManager = _userService.GetUserByUserGuid(notifyTo);
                if (accountManager != null)
                {
                    //emailTo = projectManager.WorkEmail;
                    recipientName            = accountManager.DisplayName;
                    emailModel.ReceipentName = recipientName;
                    subject = "A new Job Request Form has been submitted for contract: " + emailModel.ContractNumber;
                }
                var submittedByManager = _userService.GetUserByUserGuid(model.KeyPersonnel.ProjectManager);
                emailModel.SubmittedBy = submittedByManager.Firstname + " " + submittedByManager.Lastname;
                break;

            case (int)JobRequestStatus.Accounting:
                var accountUser = _userService.GetUserByUserGuid(notifyTo);
                if (accountUser != null)
                {
                    //emailTo = accountUser.WorkEmail;
                    recipientName            = accountUser.DisplayName;
                    emailModel.ReceipentName = recipientName;
                    subject = "Job Request has been set to done contract: " + emailModel.ContractNumber;
                }
                var submittedByAccount = _userService.GetUserByUserGuid(model.KeyPersonnel.AccountingRepresentative);
                emailModel.SubmittedBy = submittedByAccount.Firstname + " " + submittedByAccount.Lastname;
                emailModel.Status      = "Done";
                break;

            default:
                break;
            }

            content = EmailHelper.GetContentForJobRequestNotify(template, keyPersonnel, emailModel);
            _emailSender.SendEmailAsync(emailTo, recipientName, subject, content);
        }