Example #1
0
        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());
        }
Example #2
0
        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);
        }
Example #3
0
        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);
        }