private FormularyEditModel GetFormularyEditModel(FormularyHeaderAPIModel formulariesfromAPI) { var vmProvider = new FormularyEditViewModelProvider(this._mapper, this.HttpContext) { ApiModelProvider = () => formulariesfromAPI }; return(vmProvider.GetFormularyEditVM()); }
private List <CodeNameSelectorModel> GetLocalRoutes(FormularyHeaderAPIModel src, string routeFieldType_Cd) { if (src == null || !src.FormularyLocalRouteDetails.IsCollectionValid()) { return(null); } return(src.FormularyLocalRouteDetails .Where(rec => rec.RouteFieldTypeCd == routeFieldType_Cd) .Select(rec => ConvertStringFromAPIToCodeNameModelWithDefaults(rec.RouteCd, rec.Source, null)).ToList()); }
public FormularyDetailAPIModel Resolve(FormularyEditModel source, FormularyHeaderAPIModel destination, FormularyDetailAPIModel destMember, ResolutionContext context) { if (destination == null || source == null) { return(null); } var detail = context.Mapper.Map <FormularyDetailAPIModel>(source); return(detail); }
public List <FormularyAdditionalCodeAPIModel> Resolve(FormularyEditModel source, FormularyHeaderAPIModel destination, List <FormularyAdditionalCodeAPIModel> destMember, ResolutionContext context) { var additionalCodes = new List <FormularyAdditionalCodeAPIModel>(); if (destination == null) { return(additionalCodes); } if (source.FormularyClassificationCodes.IsCollectionValid()) { additionalCodes = context.Mapper.Map <List <FormularyAdditionalCodeAPIModel> >(source.FormularyClassificationCodes); additionalCodes.Each(rec => rec.CodeType = "Classification"); } if (source.FormularyIdentificationCodes.IsCollectionValid()) { var idenCodes = context.Mapper.Map <List <FormularyAdditionalCodeAPIModel> >(source.FormularyIdentificationCodes); idenCodes.Each(rec => rec.CodeType = "Identification"); additionalCodes.AddRange(idenCodes); } return(additionalCodes); }
public VMPFormularyEditVMBuilder(IMapper mapper, HttpContext httpContext, FormularyHeaderAPIModel apiModel) { _mapper = mapper; _httpContext = httpContext; _apiModel = apiModel; }
public async Task <IActionResult> ExcelImport() { string token = HttpContext.Session.GetString("access_token"); int.TryParse(_configuration["SynapseCore:Settings:FileImportBatchSize"], out int batSizeForFileFromConfig); var retries = 0; var responseStringBuilder = new StringBuilder(); IFormFile xlFile = Request.Form.Files[0]; var colmsConfigured = GetColumnDetailsFromConfig; Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); var xlFileXtn = Path.GetExtension(xlFile.FileName).ToLower(); if (xlFileXtn != ".xls" && xlFileXtn != ".xlsx") { return(StatusCode((int)HttpStatusCode.NotAcceptable)); } //var dirPath = CreateDirectory(); if (xlFile.Length > 0) { //string fullPath = Path.Combine(dirPath, xlFile.FileName); //using (var stream = System.IO.File.Create(fullPath)) //{ // await xlFile.CopyToAsync(stream); //} var requests = new List <FormularyHeaderAPIModel>(); using (var reader = ExcelReaderFactory.CreateReader(xlFile.OpenReadStream())) { var result = reader.AsDataSet(new ExcelDataSetConfiguration() { ConfigureDataTable = (_) => new ExcelDataTableConfiguration() { UseHeaderRow = true, } }).Tables[0];// get the first sheet data with index 0. var rowData = GetRowData(colmsConfigured); //var totalBatches = (result.Rows.Count) / 500; //List<int> source = Enumerable.Range(1, 19).ToList(); //int batchsize = 10; //List<List<int>> batches = new List<List<int>>(); //for (int i = 0; i < source.Count; i += batchsize) //{ // var batch = source.Skip(i).Take(batchsize); // batches.Add(batch.ToList()); //} var batchsize = batSizeForFileFromConfig; var batchedRequests = new List <List <FormularyHeaderAPIModel> >(); for (var rowIndex = 0; rowIndex < result.Rows.Count; rowIndex++) { var row = result.Rows[rowIndex]; if (!CanProcessRow(row, colmsConfigured)) { continue; } var requestRow = new FormularyHeaderAPIModel { Detail = new FormularyDetailAPIModel(), FormularyRouteDetails = new List <FormularyRouteDetailAPIModel>() }; colmsConfigured.Keys.Each(k => { if (rowData.ContainsKey(k)) { rowData[k](row, requestRow); } }); requests.Add(requestRow); } for (var reqIndex = 0; reqIndex < requests.Count; reqIndex += batchsize) { var batches = requests.Skip(reqIndex).Take(batchsize); batchedRequests.Add(batches.ToList()); } //for (var rowIndex = 0; rowIndex < result.Rows.Count; rowIndex++) //for (var rowIndex = 0; rowIndex < result.Rows.Count; rowIndex += batchsize) //{ // var requests = new List<CreateFormularyAPIRequest>(); // var row = result.Rows[rowIndex]; // if (!CanProcessRow(row, colmsConfigured)) continue; // var requestRow = new CreateFormularyAPIRequest // { // Detail = new CreateFormularyDetailAPIRequest(), // FormularyRouteDetails = new List<CreateFormularyRouteDetailAPIRequest>() // }; // colmsConfigured.Keys.Each(k => // { // if (rowData.ContainsKey(k)) // rowData[k](row, requestRow); // }); // requests.Add(requestRow); // batchedRequests.Add(requests); // //var response = await DataService.TerminologyAPIService.FileImportMedication(requests, token); // //FormatResponseMessage(response, requestRow, responseStringBuilder); //} foreach (var batchReq in batchedRequests) { retries = 0; try { var response = await DataService.TerminologyAPIService.FileImportMedication(batchReq, token); FormatResponseMessageForBulk(response, responseStringBuilder); await Task.Delay(200); if (response.StatusCode == DataService.APIModel.StatusCode.Fail) { await RetryPosting(batchReq); } } catch (Exception ex) { if (retries == 0) { await RetryPosting(batchReq); } else { throw ex; } } } } async Task RetryPosting(List <FormularyHeaderAPIModel> batchReq) { if (retries >= 3) { throw new Exception("Exhausted re-tries during formulary file import"); } try { retries++; var response = await DataService.TerminologyAPIService.FileImportMedication(batchReq, token); FormatResponseMessageForBulk(response, responseStringBuilder); await Task.Delay(200); if (response.StatusCode == DataService.APIModel.StatusCode.Fail) { await RetryPosting(batchReq); } } catch (Exception ex) { if (retries <= 2) { await RetryPosting(batchReq); } else { throw ex; } } } var codesInExcel = new List <string>(); if (requests.IsCollectionValid()) { codesInExcel = requests.Select(rec => rec.Code).ToList(); } await UploadNonFormulariesInDMD(codesInExcel, token, responseStringBuilder); await DataService.TerminologyAPIService.InvokePostImportProcess(token); } //return Ok("Uploaded successfully"); return(Json(responseStringBuilder.ToString())); }
public async Task <IActionResult> UpdateFormulary(FormularyEditModel editedData) { BulkFormularyEditModel bulkEditedData = null; string token = HttpContext.Session.GetString("access_token"); var partialView = GetFormularyEditView(editedData.ProductType); if (editedData.IsBulkEdit) { bulkEditedData = editedData as BulkFormularyEditModel; partialView = GetFormularyEditViewForBulkEdit(editedData.ProductType); } if (!ModelState.IsValid) { await FillLookupsToViewBag(editedData.OriginalStatus); editedData.IsSaveSuccessful = false; return(PartialView(partialView, editedData)); } var apiModels = new List <FormularyHeaderAPIModel>(); var uniqueIds = editedData.FormularyVersionIds; foreach (var rec in uniqueIds) { FormularyHeaderAPIModel apiModel = null; if (editedData.IsBulkEdit) { var orginalObj = JsonConvert.DeserializeObject <BulkFormularyEditModel>(bulkEditedData.SerializedOriginalObj); var edDataDeserializedObj = _mapper.Map <BulkFormularyEditModel>(bulkEditedData); await MergeOnlyModified(edDataDeserializedObj, orginalObj, rec); apiModel = _mapper.Map <FormularyHeaderAPIModel>(edDataDeserializedObj); } else { apiModel = _mapper.Map <FormularyHeaderAPIModel>(editedData); } apiModel.FormularyVersionId = rec; apiModel.RecStatusCode = apiModel.RecStatusCode; //editedData.IsBulkEdit ? null : apiModel.RecStatusCode;//For bulk-edit mode - Record status is not editable apiModels.Add(apiModel); } TerminologyAPIResponse <UpdateFormularyAPIResponse> response = await TerminologyAPIService.UpdateFormulary(apiModels, token); if (response.StatusCode != DataService.APIModel.StatusCode.Success) { await FillLookupsToViewBag(editedData.OriginalStatus); _toastNotification.AddErrorToastMessage(string.Join('\n', response.ErrorMessages)); editedData.IsSaveSuccessful = false; return(PartialView(partialView, editedData)); } if (response.StatusCode == DataService.APIModel.StatusCode.Success) { if (response.Data.Status != null && response.Data.Status.ErrorMessages.IsCollectionValid()) { var errors = string.Join('\n', response.Data.Status.ErrorMessages); _toastNotification.AddInfoToastMessage(errors); await FillLookupsToViewBag(editedData.OriginalStatus); editedData.IsSaveSuccessful = true; return(PartialView(partialView, editedData)); } } _toastNotification.AddSuccessToastMessage("Successfully Updated Formulary details"); editedData.IsSaveSuccessful = true; return(Json(null)); }