public IActionResult SicCodeUploadPost(AdminFileUploadViewModel viewModel)
        {
            if (!ReferenceDataHelper.TryParseCsvFileWithHeadings(
                    viewModel.File,
                    new[] { "SicCodeId", "SicSectionId", "Description", "Synonyms" },
                    out List <SicCode> sicCodesFromUploadFile,
                    out string errorMessage))
            {
                viewModel.AddErrorFor(m => m.File, errorMessage);
                return(View("SicCodeUpload", viewModel));
            }

            List <SicCode> sicCodesFromDatabase = dataRepository.GetAll <SicCode>().ToList();

            var sicCodeUploadCheckViewModel = new AdminSicCodeUploadCheckViewModel
            {
                SerializedNewRecords = JsonConvert.SerializeObject(sicCodesFromUploadFile),
                AddsEditsDeletesSet  = new AddsEditsDeletesSet <SicCode>(
                    sicCodesFromDatabase,
                    sicCodesFromUploadFile,
                    s => s.SicCodeId,
                    (s1, s2) => s1.SicSectionId == s2.SicSectionId &&
                    s1.Description == s2.Description &&
                    s1.Synonyms == s2.Synonyms,
                    s => s.OrganisationSicCodes.Count > 0)
            };

            return(View("SicCodeUploadCheck", sicCodeUploadCheckViewModel));
        }
        public IActionResult DataMigrationFromFile()
        {
            if (!IsUserAllowedToImportData())
            {
                return(Unauthorized());
            }

            var viewModel = new AdminFileUploadViewModel();

            return(View("DataMigrationFromFile", viewModel));
        }
        public IActionResult ImportAllDataFromFile(AdminFileUploadViewModel viewModel)
        {
            if (!IsUserAllowedToImportData())
            {
                return(Unauthorized());
            }

            byte[] fileAsBytes;
            using (var memoryStream = new MemoryStream())
            {
                viewModel.File.OpenReadStream().CopyTo(memoryStream);
                fileAsBytes = memoryStream.ToArray();
            }

            string fileAsString = BackupHelper.Unzip(fileAsBytes);

            ImportDataFromJsonString(fileAsString);

            return(Json("Succeeded!"));
        }
        public IActionResult SicCodeUploadGet()
        {
            var viewModel = new AdminFileUploadViewModel();

            return(View("SicCodeUpload", viewModel));
        }