Beispiel #1
0
        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));
            }
        }
Beispiel #2
0
        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));
        }