public IActionResult Edit([FromForm] ContractWBSViewModel contractWBS) { try { contractWBS.UpdatedOn = CurrentDateTimeHelper.GetCurrentDateTime(); contractWBS.UpdatedBy = UserHelper.CurrentUserGuid(HttpContext); contractWBS.IsActive = true; contractWBS.IsDeleted = false; if (!ModelState.IsValid) { return(BadRequest(ModelState)); } //var wbsEntity = _mapper.Map<ContractWBS>(contractWBS); //_contractWBSService.UpdateContractWBS(wbsEntity); //add file to contract file var contractFile = ContractsMapper.MapContractWBSViewModelToContractResourceFile(contractWBS); _contractRefactorService.UpdateContractFile(contractFile); //end of contract file return(Ok(new { status = ResponseStatus.success.ToString(), message = "Successfully Edited !!" })); } catch (Exception ex) { ModelState.AddModelError(ex.ToString(), ex.Message); return(BadRequest(ModelState)); } }
public IActionResult Edit([FromForm] EmployeeBillingRatesViewModel employeeBillingRates) { try { employeeBillingRates.UpdatedOn = CurrentDateTimeHelper.GetCurrentDateTime(); employeeBillingRates.UpdatedBy = UserHelper.CurrentUserGuid(HttpContext); employeeBillingRates.IsActive = true; employeeBillingRates.IsDeleted = false; if (!ModelState.IsValid) { return(BadRequest(ModelState)); } //var employeeBillingRatesEntity = _mapper.Map<EmployeeBillingRates>(employeeBillingRates); //_employeeBillingRatesService.UpdateEmployeeBillingRates(employeeBillingRatesEntity); //later added var file = ContractsMapper.MapEmployeeBillingRatesViewModelToContractFiles(employeeBillingRates); _contractRefactorService.UpdateContractFile(file); return(Ok(new { status = ResponseStatus.success.ToString(), message = "Successfully Edited !!" })); } catch (Exception ex) { ModelState.AddModelError(ex.ToString(), ex.Message); return(BadRequest(ModelState)); } }
public IActionResult Get(Guid id) { try { //var model = _employeeBillingRatesService.GetEmployeeBillingRatesById(id); var file = _contractRefactorService.GetFileByResourceGuid(id, Core.Entities.EnumGlobal.ResourceType.EmployeeBillingRates.ToString()); if (file != null) { var model = ContractsMapper.MapContractFilesToEmployeeBillingRatesViewModel(file); var filePath = $"{documentRoot}/{model.FilePath}"; var contractViewModels = CsvValidationHelper.ReadFile(filePath, (Models.ViewModels.EnumGlobal.UploadMethodName)UploadMethodName.EmployeeBillingRate); var data = contractViewModels.Select(x => new { ContractGuid = id, LaborCode = x.LaborCode, EmployeeName = x.EmployeeName, Rate = x.Rate, StartDate = x.StartDate, EndDate = x.EndDate }).ToList(); return(Json(new { data = data })); } return(Json(new { data = new List <dynamic>() })); } catch (Exception ex) { ModelState.AddModelError(ex.ToString(), ex.Message); return(BadRequest(ModelState)); } }
public IActionResult Edit(Guid id) { try { var jobRequestEntity = _jobRequestService.GetDetailsForJobRequestById(id); var model = ContractsMapper.MapJobRequestToViewModel(jobRequestEntity); if (model.Parent_ContractGuid == null) { model.BaseUrl = "Contract"; } else { model.BaseUrl = "Project"; var parentContractDetails = _contractRefactorService.GetBasicContractById(model.Parent_ContractGuid ?? Guid.Empty); var parentContractNumber = parentContractDetails == null ? "N/A" : parentContractDetails.ContractNumber; model.BasicContractInfo.ParentProjectNumber = parentContractDetails == null ? "N/A" : parentContractDetails.ProjectNumber; } var companyListEntity = _jobRequestService.GetCompanyData(); var companyList = _mapper.Map <ICollection <Models.ViewModels.KeyValuePairModel <Guid, string> > >(companyListEntity); var companies = model.Companies; var questionaire = _mapper.Map <Models.ViewModels.Contract.ContractQuestionaireViewModel>(jobRequestEntity.Contracts.ContractQuestionaire); model.ContractQuestionaire = questionaire; List <string> companySelected = new List <string>(); if (!string.IsNullOrEmpty(companies)) { var listCompany = companies.Split(","); foreach (var name in listCompany) { companySelected.Add(name); } } model.CompanySelected = companySelected; model.companyList = companyList; model.radioIsIntercompanyWorkOrder = KeyValueHelper.GetYesNo(); model.ContractGuid = id; model.JobRequestGuid = id; model.farContractViewModel = GetFarContract(model.ContractGuid); return(View(model)); } catch (Exception e) { ModelState.AddModelError("", e.Message); return(BadRequest(ModelState)); } }
public ActionResult Edit(Guid id) { try { var file = _contractRefactorService.GetFileByResourceGuid(id, Core.Entities.EnumGlobal.ResourceType.EmployeeBillingRates.ToString()); var model = ContractsMapper.MapContractFilesToEmployeeBillingRatesViewModel(file); var user = _userService.GetUserByUserGuid(file.UpdatedBy); model.UpdatedByDisplayname = user.DisplayName; return(PartialView(model)); } catch (Exception ex) { ModelState.AddModelError(ex.ToString(), ex.Message); return(BadRequest(ModelState)); } }
public IActionResult Edit([FromForm] LaborCategoryRatesViewModel laborCategoryRates) { try { laborCategoryRates.UpdatedOn = CurrentDateTimeHelper.GetCurrentDateTime(); laborCategoryRates.UpdatedBy = UserHelper.CurrentUserGuid(HttpContext); laborCategoryRates.IsActive = true; laborCategoryRates.IsDeleted = false; if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var contractFile = ContractsMapper.MapSubcontractorBillingRatesViewModelToContractFiles(laborCategoryRates); _contractRefactorService.UpdateContractFile(contractFile); return(Ok(new { status = ResponseStatus.success.ToString(), message = "Successfully Edited !!" })); } catch (Exception ex) { ModelState.AddModelError(ex.ToString(), ex.Message); return(BadRequest(ModelState)); } }
public IActionResult Add(Guid id) { try { var jobRequestEntity = _jobRequestService.GetDetailsForJobRequestById(id); var model = ContractsMapper.MapJobRequestToViewModel(jobRequestEntity); var companyListEntity = _jobRequestService.GetCompanyData(); var companyList = _mapper.Map <ICollection <Models.ViewModels.KeyValuePairModel <Guid, string> > >(companyListEntity); if (model.Parent_ContractGuid == null) { model.BaseUrl = "Contract"; } else { model.BaseUrl = "Project"; var parentContractDetails = _contractRefactorService.GetBasicContractById(model.Parent_ContractGuid ?? Guid.Empty); var parentContractNumber = parentContractDetails == null ? "N/A" : parentContractDetails.ContractNumber; model.BasicContractInfo.ParentProjectNumber = parentContractDetails == null ? "N/A" : parentContractDetails.ProjectNumber; } model.companyList = companyList; model.Status = (int)JobRequestStatus.ContractRepresentative; model.radioIsIntercompanyWorkOrder = KeyValueHelper.GetYesNo(); model.ContractGuid = id; var questionaire = _mapper.Map <Models.ViewModels.Contract.ContractQuestionaireViewModel>(jobRequestEntity.Contracts.ContractQuestionaire); model.ContractQuestionaire = questionaire; model.farContractViewModel = GetFarContract(model.ContractGuid); model.IsNew = true; return(View(model)); } catch (Exception e) { ModelState.AddModelError(e.ToString(), e.Message); return(BadRequest(ModelState)); } }
public IActionResult Add([FromForm] EmployeeBillingRatesViewModel employeeBillingRates) { try { if (employeeBillingRates.FileToUpload == null) { ModelState.AddModelError("", "Please insert the file."); return(BadRequest(ModelState)); } var isfileValid = _fileService.UploadFileTypeCheck(employeeBillingRates.FileToUpload); employeeBillingRates.CreatedOn = CurrentDateTimeHelper.GetCurrentDateTime(); employeeBillingRates.UpdatedOn = CurrentDateTimeHelper.GetCurrentDateTime(); employeeBillingRates.CreatedBy = UserHelper.CurrentUserGuid(HttpContext); employeeBillingRates.UpdatedBy = UserHelper.CurrentUserGuid(HttpContext); employeeBillingRates.IsActive = true; employeeBillingRates.IsDeleted = false; var contractNumber = _contractRefactorService.GetContractNumberById(employeeBillingRates.ContractGuid); var contractResourceFile = _contractResourceFileService.GetFilePathByResourceIdAndKeys(Core.Entities.EnumGlobal.ResourceType.EmployeeBillingRates.ToString(), employeeBillingRates.ContractGuid); if (contractResourceFile != null && (employeeBillingRates.FileToUpload != null || employeeBillingRates.FileToUpload.Length != 0)) { var filename = ""; if (!isfileValid) { var directoryPath = Path.GetDirectoryName(contractResourceFile.FilePath); filename = _fileService.FilePost($@"{documentRoot}/{contractResourceFile.FilePath}/", employeeBillingRates.FileToUpload); employeeBillingRates.IsCsv = false; filePath = $"{contractResourceFile.FilePath}/{filename}"; } else { var files = _contractRefactorService.GetFileByResourceGuid(employeeBillingRates.ContractGuid, Core.Entities.EnumGlobal.ResourceType.EmployeeBillingRates.ToString()); var relativePath = $@"{documentRoot}/{contractResourceFile.FilePath}/"; var previousFile = string.Empty; if (files != null) { previousFile = files.UploadFileName; } filename = _fileService.MoveFile(relativePath, previousFile, employeeBillingRates.FileToUpload); employeeBillingRates.IsCsv = true; var fullPath = $@"{relativePath}/{filename}"; Helpers.CsvValidationHelper.ChecksValidHeaderAndReadTheFile(fullPath, relativePath, previousFile, (Models.ViewModels.EnumGlobal.UploadMethodName)UploadMethodName.EmployeeBillingRate); filePath = $"{contractResourceFile.FilePath}/{filename}"; } employeeBillingRates.FilePath = filePath; employeeBillingRates.UploadFileName = filename; } if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var contractFile = ContractsMapper.MapEmployeeBillingRatesViewModelToContractFiles(employeeBillingRates); contractFile.ResourceType = Core.Entities.EnumGlobal.ResourceType.Contract.ToString(); if (contractResourceFile != null) { contractFile.ParentId = contractResourceFile.ContractResourceFileGuid; } _contractRefactorService.CheckAndInsertContractFile(contractFile); //audit log.. var contractEntity = _contractRefactorService.GetContractEntityByContractId(contractFile.ResourceGuid); var additionalInformation = string.Format("{0} {1} the {2}", User.FindFirst("fullName").Value, CrudTypeForAdditionalLogMessage.Uploaded.ToString(), "Employee Billing Rates File"); string additionalInformationURl = string.Empty; string resource = string.Empty; if (contractEntity.ParentContractGuid == Guid.Empty || contractEntity.ParentContractGuid == null) { additionalInformationURl = _configuration.GetSection("SiteUrl").Value + ("/Contract/Details/" + contractEntity.ContractGuid); resource = string.Format("{0} </br> Contract No:{1} </br> Project No:{2} </br> File Name:{3}", "Employee Billing Rates", contractEntity.ContractNumber, contractEntity.ProjectNumber, employeeBillingRates.UploadFileName); } else { additionalInformationURl = _configuration.GetSection("SiteUrl").Value + ("/Project/Details/" + contractEntity.ContractGuid); resource = string.Format("{0} </br> TaskOrder No:{1} </br> Project No:{2} </br> File Name:{3}", "Employee Billing Rates", contractEntity.ContractNumber, contractEntity.ProjectNumber, employeeBillingRates.UploadFileName); } AuditLogHandler.InfoLog(_logger, User.FindFirst("fullName").Value, UserHelper.CurrentUserGuid(HttpContext), contractFile, resource, contractFile.ContractResourceFileGuid, UserHelper.GetHostedIp(HttpContext), "File Uploaded", Guid.Empty, "Successful", "", additionalInformation, additionalInformationURl); //end of audit log. return(Ok(new { status = ResponseStatus.success.ToString(), message = "Successfully Added !!" })); } catch (Exception ex) { ModelState.AddModelError(ex.ToString(), ex.Message); return(BadRequest(ModelState)); } }
private bool SendNotification(Guid resourceId, Guid contractGuid, int currentStage) { try { var notificationModel = new GenericNotificationViewModel(); var notificationTemplatesDetails = new NotificationTemplatesDetail(); var userList = new List <User>(); var receiverInfo = new User(); var receiverGuid = Guid.Empty; notificationModel.ResourceId = resourceId; notificationModel.RedirectUrl = _configuration.GetSection("SiteUrl").Value + ("/JobRequest/Detail/" + contractGuid); notificationModel.NotificationTemplateKey = Infrastructure.Helpers.FormatHelper.ConcatResourceTypeAndAction (EnumGlobal.ResourceType.JobRequest.ToString(), EnumGlobal.CrudType.Notify.ToString()); notificationModel.CurrentDate = CurrentDateTimeHelper.GetCurrentDateTime(); notificationModel.CurrentUserGuid = UserHelper.CurrentUserGuid(HttpContext); notificationModel.SendEmail = true; var jobRequestEntity = _jobRequestService.GetDetailsForJobRequestById(contractGuid); var model = ContractsMapper.MapJobRequestToViewModel(jobRequestEntity); var keyPersonnels = _contractRefactorService.GetKeyPersonnelByContractGuid(contractGuid); if (keyPersonnels?.Any() == true) { switch (currentStage) { case (int)JobRequestStatus.ProjectControl: var projectControls = keyPersonnels.FirstOrDefault(x => x.UserRole == ContractUserRole._projectControls); if (projectControls != null) { receiverGuid = projectControls.UserGuid; } break; case (int)JobRequestStatus.ProjectManager: var projectManager = keyPersonnels.FirstOrDefault(x => x.UserRole == ContractUserRole._projectManager); if (projectManager != null) { receiverGuid = projectManager.UserGuid; } break; case (int)JobRequestStatus.Accounting: var accountRepresentative = keyPersonnels.FirstOrDefault(x => x.UserRole == ContractUserRole._accountRepresentative); if (accountRepresentative != null) { receiverGuid = accountRepresentative.UserGuid; } break; } receiverInfo = _userService.GetUserByUserGuid(receiverGuid); if (receiverInfo != null) { userList.Add(receiverInfo); notificationModel.IndividualRecipients = userList; } var keyList = "<ul>"; foreach (var person in keyPersonnels) { keyList += "<li>" + person.User.DisplayName + " (" + person.UserRole + ")" + "</li>"; } keyList += "</li>"; StringBuilder additionalUser = new StringBuilder(keyList); notificationTemplatesDetails.ContractNumber = model.BasicContractInfo.ContractNumber; notificationTemplatesDetails.AwardingAgency = model.CustomerInformation.AwardingAgencyOfficeName; notificationTemplatesDetails.FundingAgency = model.CustomerInformation.FundingAgencyOfficeName; notificationTemplatesDetails.ProjectNumber = model.BasicContractInfo.ProjectNumber; notificationTemplatesDetails.ContractTitle = model.BasicContractInfo.ContractTitle; notificationTemplatesDetails.Description = model.BasicContractInfo.Description; notificationTemplatesDetails.AdditionalUser = additionalUser.ToString(); 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); }
public ActionResult Edit(JobRequestViewModel jobRequestViewModel) { try { List <string> selectionOfCompanies = new List <string>(); JobRequest jobRequest = new JobRequest(); jobRequest = ContractsMapper.MapViewModelToJobRequest(jobRequestViewModel); jobRequest.UpdatedOn = DateTime.Now; jobRequest.UpdatedBy = UserHelper.CurrentUserGuid(HttpContext); jobRequest.IsActive = true; jobRequest.IsDeleted = false; if (jobRequestViewModel.CompanySelected != null && jobRequestViewModel.CompanySelected.Count > 0) { foreach (var name in jobRequestViewModel.CompanySelected) { selectionOfCompanies.Add(name); } jobRequest.Companies = string.Join(",", selectionOfCompanies); } var loggedUser = UserHelper.GetLoggedUser(HttpContext); _jobRequestService.Edit(jobRequest); var getPreviousStatus = _jobRequestService.GetCurrentStatusByGuid(jobRequestViewModel.JobRequestGuid); if (getPreviousStatus > jobRequestViewModel.Status) { SendNotification(jobRequestViewModel.JobRequestGuid, jobRequestViewModel.ContractGuid, jobRequestViewModel.Status); } //audit log.. var contractEntity = _contractRefactorService.GetContractEntityByContractId(jobRequest.ContractGuid); var additionalInformation = string.Format("{0} {1} the {2}", User.FindFirst("fullName").Value, CrudTypeForAdditionalLogMessage.Edited.ToString(), ResourceType.JobRequest.ToString()); var additionalInformationURl = _configuration.GetSection("SiteUrl").Value + ("/jobRequest/Detail/" + jobRequestViewModel.ContractGuid); var resource = string.Format("{0} </br> Project No :{1} Title:{2}", "Job Request", contractEntity.ProjectNumber, contractEntity.ContractTitle); AuditLogHandler.InfoLog(_logger, User.FindFirst("fullName").Value, UserHelper.CurrentUserGuid(HttpContext), jobRequest.BasicContractInfo, resource, jobRequest.JobRequestGuid, UserHelper.GetHostedIp(HttpContext), "Job Request Edited", Guid.Empty, "Successful", "", additionalInformationURl, additionalInformationURl); //end of log.. //remove president and regional manager from the list if (jobRequest.Contracts.ContractUserRole != null) { var president = jobRequest.Contracts.ContractUserRole.Where(x => x.UserRole == Contracts._companyPresident).FirstOrDefault(); var regional = jobRequest.Contracts.ContractUserRole.Where(x => x.UserRole == Contracts._regionalManager).FirstOrDefault(); jobRequest.Contracts.ContractUserRole.ForEach(x => x.ContractGuid = jobRequest.Contracts.ContractGuid); jobRequest.Contracts.ContractUserRole.Remove(president); jobRequest.Contracts.ContractUserRole.Remove(regional); _contractRefactorService.UpdateContractUsers(jobRequest.Contracts.ContractUserRole); } _contractRefactorService.UpdateProjectNumberByGuid(jobRequest.Contracts.ContractGuid, jobRequest.Contracts.ProjectNumber); var key = Infrastructure.Helpers.FormatHelper.ConcatResourceTypeAndAction(Core.Entities.EnumGlobal.ResourceType.JobRequest.ToString(), "Notify"); //Core.Entities.EnumGlobal.CrudType.Edit.ToString()); var redirectUrl = string.Format($@"/JobRequest/Detail/{jobRequest.Contracts.ContractGuid}"); var parameter = new { redirectUrl = redirectUrl, key = key, cameFrom = "Contract Management", resourceName = "JobRequest", resourceDisplayName = "JobRequest", resourceId = jobRequest.Contracts.ContractGuid }; return(RedirectToAction("Index", "Notification", parameter)); } catch (Exception ex) { ModelState.AddModelError("", ex.Message); return(View(jobRequestViewModel)); } }
public ActionResult Add(JobRequestViewModel jobRequestViewModel) { try { List <string> selectionOfCompanies = new List <string>(); JobRequest jobRequest = new JobRequest(); jobRequest = ContractsMapper.MapViewModelToJobRequest(jobRequestViewModel); if (jobRequestViewModel.CompanySelected != null && jobRequestViewModel.CompanySelected.Count > 0) { foreach (var name in jobRequestViewModel.CompanySelected) { selectionOfCompanies.Add(name); } jobRequest.Companies = string.Join(",", selectionOfCompanies); } Guid id = Guid.NewGuid(); jobRequest.JobRequestGuid = id; jobRequest.CreatedOn = DateTime.Now; jobRequest.CreatedBy = UserHelper.CurrentUserGuid(HttpContext); jobRequest.UpdatedOn = DateTime.Now; jobRequest.UpdatedBy = UserHelper.CurrentUserGuid(HttpContext); jobRequest.IsActive = true; jobRequest.IsDeleted = false; jobRequest.Status = (int)JobRequestStatus.ProjectControl; _jobRequestService.Add(jobRequest); SendNotification(jobRequest.JobRequestGuid, jobRequest.ContractGuid, jobRequest.Status); //audit log.. var contractEntity = _contractRefactorService.GetContractEntityByContractId(jobRequest.ContractGuid); var additionalInformation = string.Format("{0} {1} the {2}", User.FindFirst("fullName").Value, CrudTypeForAdditionalLogMessage.Added.ToString(), ResourceType.JobRequest.ToString()); var additionalInformationURl = _configuration.GetSection("SiteUrl").Value + ("/jobRequest/Detail/" + jobRequest.ContractGuid); var resource = string.Format("{0} </br> Project No :{1} Title:{2}", "Job Request", contractEntity.ProjectNumber, contractEntity.ContractTitle); AuditLogHandler.InfoLog(_logger, User.FindFirst("fullName").Value, UserHelper.CurrentUserGuid(HttpContext), jobRequest.BasicContractInfo, resource, jobRequest.JobRequestGuid, UserHelper.GetHostedIp(HttpContext), "Job Request Added", Guid.Empty, "Successful", "", additionalInformationURl, additionalInformationURl); //end of log.. _contractRefactorService.UpdateContractUsers(jobRequest.Contracts.ContractUserRole); _contractRefactorService.UpdateProjectNumberByGuid(jobRequest.Contracts.ContractGuid, jobRequest.Contracts.ProjectNumber); //after updating contract send notification.. var key = Infrastructure.Helpers.FormatHelper.ConcatResourceTypeAndAction(Core.Entities.EnumGlobal.ResourceType.JobRequest.ToString(), "Notify"); //Core.Entities.EnumGlobal.CrudType.Create.ToString()); var redirectUrl = string.Format($@"/JobRequest/Detail/{jobRequest.Contracts.ContractGuid}"); var parameter = new { redirectUrl = redirectUrl, key = key, cameFrom = "Contract Management", resourceName = "Job Request", resourceDisplayName = "Job Request", resourceId = jobRequest.Contracts.ContractGuid }; return(RedirectToAction("Index", "Notification", parameter)); //SendEmailToRespectivePersonnel(jobRequest.Status, jobRequest.Contracts.ContractGuid); //return RedirectToAction("Details", jobRequestViewModel.BaseUrl, new { id = jobRequest.Contracts.ContractGuid }); } catch (Exception ex) { ModelState.AddModelError("", ex.Message); return(View(jobRequestViewModel)); } }