public async Task <IActionResult> SubmitCounsellorInvoice([FromBody] CounsellorInvoiceFormModel model) { if (model == null) { if (ModelState.ErrorCount > 0) { var errors = ModelState.Values.SelectMany(v => v.Errors.Select(b => b.ErrorMessage)); return(new JsonResult(new { IsSuccess = false, Status = "Invoice Save Error", Message = "Errors in binding: " + string.Join(Environment.NewLine, errors) })); } else { return(new JsonResult(new { IsSuccess = false, Status = "Invoice Save Error", Message = "Error: Model is null." })); } } var t = Task.Run(() => CreateInvoiceAction(_configuration, model)); t.Wait(); string tempString = Newtonsoft.Json.JsonConvert.SerializeObject(t); var dynamicsResponse = JsonConvert.DeserializeObject <DynamicsResponse>(tempString); var result = new { IsSuccess = dynamicsResponse.IsCompletedSuccessfully, Status = "Invoice Save", Message = dynamicsResponse.Result }; return(new JsonResult(result)); }
public static CounsellorInvoiceDynamicsModel ToDynamicsModel(this CounsellorInvoiceFormModel model) { var outputModel = new CounsellorInvoiceDynamicsModel(); if (model == null || model.InvoiceDetails == null) { return(outputModel); } var invoiceDetails = model.InvoiceDetails; outputModel.CounselorNumber = invoiceDetails.counsellorRegistrationNumber; outputModel.CounselorName = $"{invoiceDetails.counsellorFirstName} {invoiceDetails.counsellorLastName}"?.Trim(); outputModel.CounselorEmail = invoiceDetails.counsellorEmail; outputModel.VendorName = invoiceDetails.vendorName; outputModel.VendorNumber = invoiceDetails.vendorNumber; outputModel.VendorEmail = invoiceDetails.vendorEmail; outputModel.ClaimNumber = invoiceDetails.claimNumber; outputModel.ClaimantName = invoiceDetails.claimantsName; outputModel.InvoiceNumber = invoiceDetails.invoiceNumber; outputModel.InvoiceDate = invoiceDetails.invoiceDate; outputModel.DescriptionOfServices = invoiceDetails.descriptionOfServicesProvided; outputModel.ExemptFromGST = invoiceDetails.exemptFromGst; outputModel.Signature = invoiceDetails.signature; var lineItems = new List <CounsellorInvoiceLineItem>(); foreach (var lineItem in invoiceDetails.lineItems) { lineItems.Add(new CounsellorInvoiceLineItem { vsd_cvap_counsellingtype = lineItem.counsellingType, vsd_cvap_sessiondate = lineItem.sessionDate, vsd_cvap_sessionduration = lineItem.sessionHours }); } outputModel.InvoiceLineItems = lineItems.ToArray(); return(outputModel); }
private static async Task <String> CreateInvoiceAction(IConfiguration configuration, CounsellorInvoiceFormModel model) { HttpClient httpClient = null; try { var invoiceModel = model.ToDynamicsModel(); JsonSerializerSettings settings = new JsonSerializerSettings(); settings.NullValueHandling = NullValueHandling.Ignore; var invoiceJson = JsonConvert.SerializeObject(invoiceModel, settings); invoiceJson = invoiceJson.Replace("odatatype", "@odata.type"); var endpointAction = "vsd_SubmitCounselorInvoice"; var tuple = await GetDynamicsHttpClientNew(configuration, invoiceJson, endpointAction); //HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, endpointAction); //request.Content = new StringContent(invoiceJson, Encoding.UTF8, "application/json"); //HttpResponseMessage response = await httpClient.SendAsync(request); //if (response.StatusCode == HttpStatusCode.OK) //{ // var jsonResult = response.Content.ReadAsStringAsync().Result; // return jsonResult; //} //return response.Content.ReadAsStringAsync().Result; string tempResult = tuple.Item1.ToString(); DynamicsResponse dynamicsResponse = new DynamicsResponse(); dynamicsResponse.IsSuccess = true; dynamicsResponse.Result = tempResult; dynamicsResponse.odatacontext = tuple.Item2.ToString(); return(dynamicsResponse.Result); } finally { if (httpClient != null) { httpClient.Dispose(); } } }