public static Case ToCrmCase(ComplaintDetailsFormBuilder model, IOptions <ComplaintsListConfiguration> complaintsConfig) { model.CouncilDepartmentSub = CouncilDepartmentSubMapper.SetComplaintCouncilDepartmentSub(model.RevsBensDept, model.EnvironmentDept, model.PlanningDept); var events = complaintsConfig.Value.ComplaintsConfigurations; var eventCode = string.IsNullOrEmpty(model.CouncilDepartmentSub) ? events.FirstOrDefault(_ => _.EventName == model.CouncilDepartment)?.EventCode ?? events.FirstOrDefault(_ => _.EventName == "none")?.EventCode : events.FirstOrDefault(_ => _.EventName == model.CouncilDepartmentSub)?.EventCode ?? events.FirstOrDefault(_ => _.EventName == "none")?.EventCode; var eventTitle = $"Complaint - {model.ComplaintAbout}"; var crmCase = new Case { EventCode = (int)eventCode, EventTitle = eventTitle, Description = GenerateDescription(model.ComplaintAbout, model.ComplaintAboutDetails), Customer = new Customer { Forename = model.FirstName, Surname = model.LastName, Email = model.EmailAddress, Telephone = model.PhoneNumber, } }; if (!string.IsNullOrEmpty(model.CustomersAddress.PlaceRef)) { crmCase.Customer.Address = new Address { Postcode = model.CustomersAddress.Postcode, Reference = model.CustomersAddress.PlaceRef, UPRN = model.CustomersAddress.PlaceRef, Description = model.CustomersAddress.ToString() }; } else { crmCase.Customer.Address = new Address { AddressLine1 = model.CustomersAddress.AddressLine1, AddressLine2 = model.CustomersAddress.AddressLine2, AddressLine3 = model.CustomersAddress.Town, Postcode = model.CustomersAddress.Postcode, Description = model.CustomersAddress.ToString() }; } return(crmCase); }
private void SendUserSuccessEmailFormBuilder(ComplaintDetailsFormBuilder model, string caseResponse) { var submissionDetails = new ComplaintsMailModel() { Subject = "We've received your formal complaint", Reference = caseResponse, FirstName = model.FirstName, LastName = model.LastName, RecipientAddress = model.EmailAddress }; _mailingServiceGateway.Send(new Mail { Payload = JsonConvert.SerializeObject(submissionDetails), Template = EMailTemplate.ComplaintsSuccess }); }
public async Task <string> CreateComplaintCaseFormBuilder(ComplaintDetailsFormBuilder model) { var crmCase = ComplaintModelMapper.ToCrmCase(model, _complaintsConfig); try { _logger.LogWarning($"ComplaintsService.CreateComplaintCase: Attempting to create verint case. {JsonConvert.SerializeObject(crmCase)}"); var response = await _verintServiceGateway.CreateCase(crmCase); SendUserSuccessEmailFormBuilder(model, response.ResponseContent); return(response.ResponseContent); } catch (Exception ex) { throw new Exception($"ComplimentsComplaintsService CreateComplimentCase an exception has occured while creating the case in verint service", ex); } }
public async Task <IActionResult> CreateCaseUsingFormBuilder([FromBody] ComplaintDetailsFormBuilder model) { var result = await _caseService.CreateComplaintCaseFormBuilder(model); return(Ok(result)); }