コード例 #1
0
        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));
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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();
                }
            }
        }