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); } }
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); }