public ActionResult Index(UploadedPinFactorViewModel model) { long totalCount; model.Id = null; ViewBag.SearchModel = model; var request = new FilteredModel <UploadedPinFactorViewModel> { PageIndex = model.ThisPageIndex, Order = model.PageOrder, OrderBy = model.PageOrderBy }; var searchModel = _mapper.Map <UploadedPinFactor>(model); var result = _mapper.Map <IList <UploadedPinFactorViewModel> >(_uploadedPinFactorService.GetPaging(searchModel, out totalCount, request.OrderBy, request.Order, (request.PageIndex - 1) * request.PageSize, request.PageSize)); if (!result.Any() && totalCount > 0 && request.PageIndex > 1) { request.PageIndex = (int)(totalCount / request.PageSize); if (totalCount % request.PageSize > 0) { request.PageIndex++; } result = _mapper.Map <IList <UploadedPinFactorViewModel> >(_uploadedPinFactorService.GetPaging(_mapper.Map <UploadedPinFactor>(model), out totalCount, request.OrderBy, request.Order, (request.PageIndex - 1) * request.PageSize, request.PageSize)); } ViewBag.OnePageOfEntries = new StaticPagedList <UploadedPinFactorViewModel>(result, request.PageIndex, request.PageSize, (int)totalCount); return(View()); }
public ActionResult UploadFactor(UploadedPinFactorViewModel viewModel) { try { var result = UploadFactorByFile(viewModel); if (result.Length > 0) { ModelState.AddModelError(string.Empty, result.ToString()); } return(View(viewModel)); } catch (Exception ex) { _logger.Error(ex); if (ex.Message.Contains("duplicate")) { ModelState.AddModelError(string.Empty, GeneralMessages.Duplicated); } else { if (ex.InnerException != null && ex.InnerException.Source.Equals(GeneralMessages.ExceptionSource)) { ModelState.AddModelError(string.Empty, ex.Message); } else { ModelState.AddModelError(string.Empty, GeneralMessages.UnexpectedError); } } } return(View(viewModel)); }
private string UploadFactorByFile(UploadedPinFactorViewModel viewModel) { var pinFile = viewModel.File; if (pinFile == null) { return("فایلی انتخاب نشده است"); } if (pinFile.ContentLength <= 0) { return("فایلی انتخابی فاقد محتوا است"); } var isExistUploadedPinFactor = _uploadedPinFactorService.GetPaging(new UploadedPinFactor { Filename = pinFile.FileName, Status = (byte)GeneralEnums.PinFactorStatus.Cancelled }, out long total).Any(); if (isExistUploadedPinFactor) { return("فایلی با این نام قبلا ثبت شده"); } var pinTypeValue = 0; var fetchedResult = new Dictionary <string, string>(); using (var streamReader = new StreamReader(pinFile.InputStream)) { while (!streamReader.EndOfStream) { var line = streamReader.ReadLine(); if (string.IsNullOrWhiteSpace(line)) { continue; } var isNumber = int.TryParse(line.Substring(0, 2), out int junk); if (line.Contains("PackageId:")) { var factorNo = line.Substring(10); viewModel.Title = factorNo; viewModel.FactorNo = factorNo; } else if (line.Contains("Quantity:")) { viewModel.Quantity = int.Parse(line.Substring(9)); } else if (line.Contains("FaceValue:")) { pinTypeValue = int.Parse(line.Substring(10)); switch (pinTypeValue) { case 10000: viewModel.PinTypeId = GeneralEnums.PinType._10_000; break; case 20000: viewModel.PinTypeId = GeneralEnums.PinType._20_000; break; case 50000: viewModel.PinTypeId = GeneralEnums.PinType._50_000; break; case 100000: viewModel.PinTypeId = GeneralEnums.PinType._100_000; break; case 200000: viewModel.PinTypeId = GeneralEnums.PinType._200_000; break; } } else if (line.Contains("CardPrefix:")) { viewModel.OpTypeId = GeneralEnums.OperatorType.MCI; } else if (isNumber) { var codes = line.Split(' '); fetchedResult.Add(codes[0], codes[1]); } } } if (string.IsNullOrWhiteSpace(viewModel.Title) || !viewModel.Quantity.HasValue || !viewModel.PinTypeId.HasValue || !viewModel.OpTypeId.HasValue || !fetchedResult.Any()) { return("فایل انتخابی صحیح نمی باشد چون فاقد اطلاعات لازم است."); } var duplicates = _preUploadedPinFactorItemService.CheckDuplicatedPins(fetchedResult.Keys.ToArray()).Select(s => s.SerialNo); if (duplicates.Any()) { fetchedResult = fetchedResult.Where(w => !duplicates.Contains(w.Key)).ToDictionary(d => d.Key, d => d.Value); } if (!fetchedResult.Any()) { return("تمام پین ها تکراری هستند"); } viewModel.Price = viewModel.Quantity * pinTypeValue; viewModel.Filename = pinFile.FileName; viewModel.Status = GeneralEnums.PinFactorStatus.New; viewModel.Description = string.Empty; viewModel.CreatorId = LogedInAdmin.Id; var model = _mapper.Map <UploadedPinFactor>(viewModel); var preUploadedPinFactorItems = new List <PreUploadedPinFactorItem>(); var now = DateTime.Now; foreach (var item in fetchedResult) { preUploadedPinFactorItems.Add(new PreUploadedPinFactorItem { SerialNo = item.Key, PinCode = Encryption.Encrypt(item.Value), //FactorId = res, OpTypeId = (byte)viewModel.OpTypeId, PinTypeId = (byte)viewModel.PinTypeId, CreatedAt = now }); } return(_uploadedPinFactorService.CreateFactor(model, preUploadedPinFactorItems)); //var res = _uploadedPinFactorService.Insert(model); //if (res <= 0) //{ // builder.Append("فاکتور ثبت نشد"); // return builder; //} //model.ReferenceNumber = model.Id = res; //var changeset = _preUploadedPinFactorItemService.BulkInsert(preUploadedPinFactorItems); //if (changeset > 0) //{ // model.Status = (byte)GeneralEnums.PinFactorStatus.New; // _uploadedPinFactorService.Update(model); // builder.Append($"تعداد {fetchedResult.Count} از {fetchedResult.Count} شارژ با موفقیت ثبت شدند."); // return builder; //} //model.Status = (byte)GeneralEnums.PinFactorStatus.Cancelled; //_uploadedPinFactorService.Update(model); //foreach (var item in preUploadedPinFactorItems) //{ // _logger.Info( // $"SerialNo : {item.SerialNo} ,PinCode : {item.PinCode}, FactorID : {item.FactorId}, OpTypeID : {item.OpTypeId} , PinTypeID : {item.PinTypeId}", // "Unsaved_PreUploadedPinFactorItems"); //} //var msg = "شارژها با موفقیت دریافت شد ولی دیتابیس ثبت نشد و نتایج لاگ شد."; //_logger.Error(msg); //builder.Append(msg); //return builder; }