private UploadSummary ParseHttpUploadedFile(HttpPostedFile file) { var returned = new UploadSummary(); var fileData = new byte[file.ContentLength]; file.InputStream.Read(fileData, 0, file.ContentLength); using (var ms = new MemoryStream(fileData)) { var sr = new StreamReader(ms); while (!sr.EndOfStream) { var dataRow = sr.ReadLine(); if (dataRow == null) { continue; } var splitDataRow = dataRow.Split(','); var rawData = new UploadRow { OwningCountry = splitDataRow[0].Trim().ToUpper(), Vin = splitDataRow[1].Trim(), EstimatedResolved = splitDataRow[2].Trim(), ReasonName = splitDataRow[3].Trim(), RemarkText = splitDataRow[4].Trim(), }; returned.DataToBeUploaded.Add(rawData); } } return(returned); }
protected void btnParse_Click(object sender, EventArgs e) { SelectedTab = 1; tbUploadResults.Text = string.Empty; if (!fuReasonsUpload.HasFile) { return; } try { var uploadSummary = ParseHttpUploadedFile(fuReasonsUpload.PostedFile); using (var dataAccess = new AdminDataAccess(null)) { DataToUpload = dataAccess.FillUploadSummary(uploadSummary); tbUploadResults.Text = uploadSummary.ErrorList.ToString(); } } catch (Exception ex) { tbUploadResults.Text = "Unable to upload the selected file."; } }
public UploadSummary FillUploadSummary(UploadSummary us) { var parsedSummary = new UploadSummary(); var invalidDates = new List <string>(); var invalidReasons = new List <string>(); var invalidVins = new List <string>(); var notUniqueVinAndOwningCountry = new List <string>(); var nonUniqueVins = DataContext.Vehicles.Where(d => d.IsFleet).GroupBy(d => d.Vin + d.OwningCountry).Where(d => d.Count() > 1).Select(d => d.Key).ToList(); var validReasonsFromDatabase = DataContext.NonRev_Remarks_Lists.Select(d => d.RemarkText).Distinct().ToList(); var validVinsForNonRevFromDatabase = (from nrv in DataContext.Vehicles where nrv.IsNonRev && nrv.IsFleet select nrv.Vin).ToList(); foreach (var r in us.DataToBeUploaded) { var validEntry = true; DateTime dt; if (!DateTime.TryParse(r.EstimatedResolved, out dt)) { validEntry = false; us.InvalidDates++; invalidDates.Add(r.EstimatedResolved); } if (!validReasonsFromDatabase.Contains(r.ReasonName)) { validEntry = false; us.InvalidReasons++; invalidReasons.Add(r.ReasonName); } if (!validVinsForNonRevFromDatabase.Contains(r.Vin)) { validEntry = false; us.InvalidVins++; invalidVins.Add(r.Vin); } if (nonUniqueVins.Contains(r.Vin + r.OwningCountry)) { validEntry = false; us.NonUniqueVinAndOwningCountry++; notUniqueVinAndOwningCountry.Add(string.Format("{0} - {1}", r.Vin, r.OwningCountry)); } if (validEntry) { r.ParsedEstimatedResolved = dt; parsedSummary.DataToBeUploaded.Add(r); } } us.ErrorList.AppendLine(string.Format("{0} row(s) found. {1} valid Non Rev Entries to be added." , us.DataToBeUploaded.Count, parsedSummary.DataToBeUploaded.Count)); us.ErrorList.AppendLine(); if (us.InvalidDates > 0) { us.ErrorList.AppendLine(string.Format("Invalid Dates: {0}", string.Join(",", invalidDates))); us.ErrorList.AppendLine(); } if (us.InvalidReasons > 0) { us.ErrorList.AppendLine(string.Format("Invalid Reasons: {0}", string.Join(",", invalidReasons))); us.ErrorList.AppendLine(); } if (us.InvalidVins > 0) { us.ErrorList.AppendLine(string.Format("Invalid Vins: {0}", string.Join(",", invalidVins))); us.ErrorList.AppendLine(); } if (us.NonUniqueVinAndOwningCountry > 0) { us.ErrorList.AppendLine(string.Format("Non Unique Vin + Owning Country: {0}", string.Join(",", notUniqueVinAndOwningCountry))); us.ErrorList.AppendLine(); } return(parsedSummary); }
public BulkUploadViewModel() { Summary = new UploadSummary { SummaryItems = new List <UploadSummaryExceptionItem>() }; }