/// <summary> /// /// </summary> /// <param name="vouchersUploadModel"></param> /// <returns></returns> public bool AddProcessVouchersUpload(ProcessVouchersUploadModel processVouchersUploadModel) { try { // update if (processVouchersUploadModel.Id > 0) { // retriever record var processVoucher = _dbContext.ProcessVouchersUploads.Where(x => x.Id == processVouchersUploadModel.Id && !x.IsDeleted).FirstOrDefault(); if (processVoucher != null) { processVoucher.ErrorMsg = processVouchersUploadModel.ErrorMsg; processVoucher.Status = processVouchersUploadModel.Status; processVoucher.ModefiedOn = System.DateTime.Now; processVoucher.CsvContent = processVouchersUploadModel.CsvContent;//System.DateTime.Now; } } else { //add new records here ProcessVouchersUpload processVouchersUpload = new ProcessVouchersUpload() { UploadId = processVouchersUploadModel.UploadId, Status = processVouchersUploadModel.Status, CreatedOn = DateTime.Now, ErrorMsg = processVouchersUploadModel.ErrorMsg, CsvContent = processVouchersUploadModel.CsvContent }; // _dbContext.ProcessVouchersUploads.Add(processVouchersUpload); processVouchersUploadModel.Id = processVouchersUpload.Id; } _dbContext.SaveChanges(); return(true); } catch (Exception ex) { return(false); } }
/// <summary> /// /// </summary> /// <param name="fileLocation"></param> /// <param name="relativeExcelPath"></param> /// <param name="IsFirstRowAsColumnNames"></param> /// <returns></returns> public async Task <bool> SaveProcessedToDb(VouchersUploadModel vouchersUploadModel) { int successCount = 0; // coupons successfully inserted int notSuccessCount = 0; // coupons not successfully inserted int totalProcessed = 0; // to track the current row of the sheet been iterated SunwingVouchersEntities context = new SunwingVouchersEntities(); IssuanceManager issuanceManager = new IssuanceManager(context); // added for testing, remove this line for production vouchersUploadModel.IsFirstRowAsColumnNames = true; List <string> ErrorMassage = new List <string>(); try { using (var reader = new StreamReader(vouchersUploadModel.UploadContent)) { List <string> csvRows = new List <string>(); while (!reader.EndOfStream) { var line = reader.ReadLine(); var values = line.Split(';'); csvRows.Add(values[0]); } // if first row is header remove that if (vouchersUploadModel.IsFirstRowAsColumnNames && csvRows.Count > 1) { csvRows.RemoveAt(0); } // check for validation for each row //read row data one by one foreach (var rowItem in csvRows) { // validate each row // and save the status to database // with status var validationData = CsvRowValidate(rowItem); ProcessVouchersUploadModel processVouchersUploadModel = new ProcessVouchersUploadModel(); processVouchersUploadModel.UploadId = vouchersUploadModel.Id; // if no error if (!validationData.Item1) { var voucher = await AddNewVoucher(validationData.Item3); if (voucher.IsSuccess) { // add the data of iterated csv row into db // add the column Content For holding all the processed Data here change processVouchersUploadModel.CsvContent = JsonConvert.SerializeObject(voucher); processVouchersUploadModel.Status = (int)ProcessVouchersUploadStatus.Success; successCount++; } else { processVouchersUploadModel.Status = (int)ProcessVouchersUploadStatus.NotSuccess; processVouchersUploadModel.ErrorMsg = voucher.ErrorMsg; notSuccessCount++; } //save the status in ProcessVouchersUpload with status success } else { //save the status in ProcessVouchersUpload with status not success processVouchersUploadModel.Status = (int)ProcessVouchersUploadStatus.NotSuccess; processVouchersUploadModel.ErrorMsg = "Row No " + totalProcessed + " process with errors: " + string.Join(", ", validationData.Item2 .Select(p => p.ToString()));// validationData.Item2.ToString(); notSuccessCount++; } issuanceManager.AddProcessVouchersUpload(processVouchersUploadModel); totalProcessed++; } } // vouchersUploadModel.Status = (int)VouchersUploadStatus.IssuedWithSuccess; vouchersUploadModel.SuccessfullyProcessed = successCount; vouchersUploadModel.NotSuccessfullyProcessed = notSuccessCount; vouchersUploadModel.TotalProcessed = totalProcessed; issuanceManager.AddVouchersUpload(vouchersUploadModel); return(true); } catch (Exception ex) { // add total process and unprocessed vouchersUploadModel.Status = (int)VouchersUploadStatus.IssuedWithNotSucces; issuanceManager.AddVouchersUpload(vouchersUploadModel); return(false); } }