public async Task <ActionResult> Upload(HttpPostedFileBase upload) { if (ModelState.IsValid) { UploadRequestCommand command = new UploadRequestCommand(upload); Logger.Info($"Processing {upload.FileName}"); Logger.Info(command.ToJson()); UploadRequestResponse response = await Mediator.Send(command); if (!response.IsValid) { ModelState.AddModelError("Upload", response.Message); return(View()); } if (response.IsNotFound) { return(NotFound()); } //Map to MVC Models to view using AutoMapper AccountResponseModel accountResponseModel = Mapper.ToAccountResponseModel(response); Logger.Info($"Processing {upload.FileName}...Complete"); Logger.Info(accountResponseModel.ToJson()); ViewBag.AscendingParam = true; return(View(accountResponseModel)); } LogModelState(); return(View()); }
public static UploadRequestResponse CheckValidation(this UploadRequestCommand request) { UploadRequestResponse response = new UploadRequestResponse(); if (request == null) { response.IsValid = false; response.Message = "Invalid Request"; return(response); } if (request.File == null || request.File.ContentLength <= 0) { response.IsValid = false; response.Message = "Invalid File"; return(response); } if (!request.File.FileName.ToLower().EndsWith(".csv")) { response.IsValid = false; response.Message = "Invalid file, must be of type .csv"; return(response); } return(response); }
public static IEnumerable <Account> ProcessRequest(this UploadRequestCommand request) { List <Account> accounts = new List <Account>(); using (Stream stream = request.File.InputStream) { StreamReader reader = new StreamReader(stream); var csv = reader.ReadToEnd(); var lines = CsvReader.ParseLines(csv); if (lines != null && lines.Any()) { foreach (var line in lines) { var split = line.Split(','); Account account = new Account { Number = !string.IsNullOrEmpty(split[0]) ? int.Parse(split[0].ToSafeString()) : -1, Name = split[1].ToSafeString(), FirstName = split[2].ToSafeString(), MiddleName = split[3].ToSafeString(), AddressLine1 = split[4].ToSafeString(), AddressLine2 = split[5].ToSafeString(), City = split[6].ToSafeString(), State = split[7].ToSafeString(), Zip = split[8].ToSafeString(), PrimaryPhoneNumber = split[9].ToSafeString(), SecondaryPhoneNumber = split[10].ToSafeString(), DateOpened = !string.IsNullOrEmpty(split[11]) ? DateTime.Parse(split[11].ToSafeString()).ToLongDateString() : null, CurrentBalance = split[12].ToSafeString(), AccountType = split[13].ToSafeString() }; accounts.Add(account); } } } return(accounts); }