private void UpdateParsingStatus(MergeCustomerUpload upload, MergeCustomerUploadStatus status)
 {
     upload.StatusId = (long)status;
     if (MergeCustomerUploadStatus.Parsing == status)
     {
         upload.ParseStartTime = DateTime.Now;
     }
     else
     {
         upload.ParseEndTime = DateTime.Now;
     }
     upload = _mergeCustomerUploadRepository.Save(upload);
 }
        public MergeCustomerUpload Save(MergeCustomerUpload domainObject)
        {
            using (var adapter = PersistenceLayer.GetDataAccessAdapter())
            {
                var entity = AutoMapper.Mapper.Map <MergeCustomerUpload, MergeCustomerUploadEntity>(domainObject);
                if (!adapter.SaveEntity(entity, true))
                {
                    throw new PersistenceFailureException("Could not save Call Upload ");
                }

                return(AutoMapper.Mapper.Map <MergeCustomerUploadEntity, MergeCustomerUpload>(entity));
            }
        }
        public ActionResult Upload(MergeCustomerEditModel model)
        {
            var sampleMediaLocation = _mediaRepository.GetSamplesLocation();
            var uploadMediaLocation = _mediaRepository.GetMergeCustomerUploadMediaFileLocation();

            model.UploadCsvMediaUrl = sampleMediaLocation.Url;

            HttpPostedFileBase postedFile = Request.Files[0];

            if (postedFile == null || postedFile.ContentLength < 1)
            {
                model.FeedbackMessage = FeedbackMessageModel.CreateFailureMessage("No file has been uploaded. Please upload a csv file.");
                return(View(model));
            }

            if (System.IO.Path.GetExtension(postedFile.FileName).ToLower() != ".csv")
            {
                model.FeedbackMessage = FeedbackMessageModel.CreateFailureMessage("Please upload a csv file!");
                return(View(model));
            }

            var physicalPath = uploadMediaLocation.PhysicalPath;

            var fileContent = System.IO.Path.GetFileNameWithoutExtension(postedFile.FileName) + "_" + DateTime.Now.ToString("MMddyyyyhhmmss") + System.IO.Path.GetExtension(postedFile.FileName);

            var fullPath = physicalPath + fileContent;

            postedFile.SaveAs(fullPath);

            var customerTable = _csvReader.ReadWithTextQualifier(fullPath);

            if (customerTable.Rows.Count == 0)
            {
                model.FeedbackMessage = FeedbackMessageModel.CreateFailureMessage("Uploaded file has no data.");
                return(View(model));
            }
            var missingColumnNames = _mergeCustomerUploadHelper.CheckForColumns(customerTable.Rows[0]);

            if (!string.IsNullOrEmpty(missingColumnNames))
            {
                model.FeedbackMessage = FeedbackMessageModel.CreateFailureMessage("Missing Column Name(s) : " + missingColumnNames);
                return(View(model));
            }

            var file = new File
            {
                Path       = fileContent,
                FileSize   = postedFile.ContentLength,
                Type       = FileType.Csv,
                UploadedBy = new OrganizationRoleUser(_session.UserSession.CurrentOrganizationRole.OrganizationRoleUserId),
                UploadedOn = DateTime.Now
            };

            file = _fileRepository.Save(file);

            var mergeCustomerUpload = new MergeCustomerUpload
            {
                FileId     = file.Id,
                StatusId   = (long)MergeCustomerUploadStatus.Uploaded,
                UploadedBy = _session.UserSession.CurrentOrganizationRole.OrganizationRoleUserId,
                UploadTime = DateTime.Now
            };

            mergeCustomerUpload = _mergeCustomerUploadRepository.Save(mergeCustomerUpload);

            if (mergeCustomerUpload != null && mergeCustomerUpload.Id > 0)
            {
                model.FeedbackMessage = FeedbackMessageModel.CreateSuccessMessage("File Uploaded Successfull.");
            }

            return(View(model));
        }