public ActionResult SaveRecord(RecordLocatorPassenger record) { var recordId = 0; using (var uow = new UnitOfWork(new Models.PassengerNameListDbContext())) { var fileRecord = uow.UploadFileRepo.Get(record.FileId); var recordDb = new RecordLocator(); recordDb.UploadFileId = record.FileId; recordDb.Code = record.RecordLocator; uow.RecordLocatorRepo.Add(recordDb); uow.Complete(); foreach (var item in record.Passengers) { var passenger = new Passenger(); passenger.Name = item; passenger.RecordLocatorId = recordDb.Id; uow.PassengerRepo.Add(passenger); fileRecord.FileContent += Environment.NewLine + "1" + record.RecordLocator; } uow.Complete(); recordId = recordDb.Id; } var jsonResult = new JsonResult(); var addResult = new AddRecordResult { RecordLocatorId = recordId }; jsonResult.Data = addResult; jsonResult.JsonRequestBehavior = JsonRequestBehavior.AllowGet; return(jsonResult); }
public async Task <IHttpActionResult> UploadNameList() { if (!Request.Content.IsMimeMultipartContent()) { throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType); } var provider = new MultipartMemoryStreamProvider(); await Request.Content.ReadAsMultipartAsync(provider); var rawData = ""; foreach (var file in provider.Contents) { var filename = file.Headers.ContentDisposition.FileName.Trim('\"'); rawData = await file.ReadAsStringAsync(); } var lines = rawData.Split(Environment.NewLine.ToCharArray()); var tempRecords = new RecordLocatorPassenger(); var nameList = new List <RecordLocatorPassenger>(); var inputLineResults = new List <InputLineResult>(); foreach (var line in lines) { var found = _recordParser.ParseRecord(line, out string passengerName, out string recordLocator); var lineResult = new InputLineResult() { LineContent = line, Processed = found }; if (found) { var passengers = new List <string> { passengerName }; var recordToUpdate = nameList.FirstOrDefault(x => x.RecordLocator == recordLocator); if (recordToUpdate == null) { recordToUpdate = new RecordLocatorPassenger(); recordToUpdate.RecordLocator = recordLocator; recordToUpdate.Passengers = Enumerable.Empty <string>(); nameList.Add(recordToUpdate); } recordToUpdate.Passengers = recordToUpdate.Passengers.Concat(passengers); } inputLineResults.Add(lineResult); } ; var result = new PassengerNameListResponse() { Records = nameList, InputLineResults = inputLineResults }; return(Ok(result)); }
private static List <RecordLocatorPassenger> ShowAllRecords(int fileId) { var resultRecords = new List <RecordLocatorPassenger>(); using (var uow = new UnitOfWork(new Models.PassengerNameListDbContext())) { var records = uow.RecordLocatorRepo.Find(x => x.UploadFileId == fileId).ToList(); if (records.Any()) { var recordIds = records.Select(x => x.Id).ToList(); var passengers = uow.PassengerRepo.Find(x => recordIds.Contains(x.RecordLocatorId)).ToList(); foreach (var item in records) { var resultRecord = new RecordLocatorPassenger(); resultRecord.RecordLocator = item.Code; resultRecord.Passengers = passengers.Where(x => x.RecordLocatorId == item.Id).Select(x => x.Name); resultRecords.Add(resultRecord); } } } return(resultRecords); }