public SuspectConditionUpload Save(SuspectConditionUpload domainObject) { using (var adapter = PersistenceLayer.GetDataAccessAdapter()) { var entity = AutoMapper.Mapper.Map <SuspectConditionUpload, SuspectConditionUploadEntity>(domainObject); if (!adapter.SaveEntity(entity, true)) { throw new PersistenceFailureException("Could not save Suspect Condition Upload "); } return(AutoMapper.Mapper.Map <SuspectConditionUploadEntity, SuspectConditionUpload>(entity)); } }
public ActionResult Upload(SuspectConditionFileUploadEditModel model, HttpPostedFileBase suspectConditionUploadFile) { if (Request.Files.Count < 1 || suspectConditionUploadFile == null) { model.FeedbackMessage = FeedbackMessageModel.CreateFailureMessage("No file has been uploaded. Please upload a csv file."); return(View(model)); } var uploadMediaLocation = _mediaRepository.GetSuspectConditionUploadMediaFileLocation(); model.SampleCsvMediaUrl = _mediaRepository.GetSamplesLocation().Url; HttpPostedFileBase file = Request.Files[0]; var physicalPath = uploadMediaLocation.PhysicalPath; var fileUploadedName = (Path.GetFileNameWithoutExtension(file.FileName) + Path.GetExtension(file.FileName)).Replace("'", "").Replace("&", ""); var fileName = (Path.GetFileNameWithoutExtension(fileUploadedName) + "_" + DateTime.Now.ToString("MMddyyyyhhmmss") + Path.GetExtension(fileUploadedName)).Replace("'", "").Replace("&", ""); var fullPath = physicalPath + fileName; file.SaveAs(fullPath); var csvReader = IoC.Resolve <ICsvReader>(); var customerTable = csvReader.ReadWithTextQualifier(fullPath); if (customerTable.Rows.Count == 0) { model.FeedbackMessage = FeedbackMessageModel.CreateFailureMessage("Uploaded file has no data."); return(View(model)); } var columns = customerTable.Columns.Cast <DataColumn>().Select(x => x.ColumnName).ToArray(); var missingColumnNames = _suspectConditionUploadHelper.CheckForColumns(columns); if (!string.IsNullOrEmpty(missingColumnNames)) { model.FeedbackMessage = FeedbackMessageModel.CreateFailureMessage("Missing Column Name(s) : " + missingColumnNames); return(View(model)); } var files = new Core.Application.Domain.File { Path = fileName, FileSize = file.ContentLength, Type = FileType.Csv, UploadedBy = new OrganizationRoleUser(_session.UserSession.CurrentOrganizationRole.OrganizationRoleUserId), UploadedOn = DateTime.Now }; files = _fileRepository.Save(files); var suspectConditionUpload = new SuspectConditionUpload { FileId = files.Id, UploadTime = DateTime.Now, StatusId = (long)SuspectConditionUploadStatus.UploadStarted, UploadedBy = _session.UserSession.CurrentOrganizationRole.OrganizationRoleUserId, TotalCount = customerTable.Rows.Count, ParseStartTime = DateTime.Now }; suspectConditionUpload = _suspectConditionUploadRepository.Save(suspectConditionUpload); model.TotalRecords = customerTable.Rows.Count; model.IsUploadSucceded = true; model.IsParseSucceded = false; model.FileName = fileName; model.FailedRecordsFile = Path.GetFileNameWithoutExtension(fileName) + "_Failed" + ".csv"; if (suspectConditionUpload != null && suspectConditionUpload.Id > 0) { model.SuspectConditionUploadId = suspectConditionUpload.Id; } var failureRecords = uploadMediaLocation.PhysicalPath + model.FailedRecordsFile; _suspectConditionUploadHelper.CreateHeaderFileRecord(failureRecords, customerTable); return(View(model)); }