public ActionResult ImportServiceDecompositionSpreadsheet(ImportServiceDecompositionSpreadsheetViewModel model) { if (ModelState.IsValid) { var folder = SettingsHelper.ImportSpreadsheetFileLocation; // If the folder doesn't exist then create if (!Directory.Exists(folder)) { Directory.CreateDirectory(folder); } var originalFullFileName = model.SpreadsheetFile.FileName; var newFileName = Guid.NewGuid() + Path.GetExtension(originalFullFileName); var newfullFileName = Path.Combine(folder, newFileName); try { model.SpreadsheetFile.SaveAs(newfullFileName); _serviceDecompositionDesignDataImportProcessor.Execute(newfullFileName, originalFullFileName, model.ServiceDeskId); return(Redirect(model.ReturnUrl)); } catch (Exception ex) { Guid errorGuid; ModelState.AddModelError(key: ModelStateErrorKey, errorMessage: Guid.TryParse(ex.Message, out errorGuid) ? string.Format(WebResources.ErrorMessage, errorGuid) : ex.Message); } finally { // Tidy up the file if it has not been deleted if (System.IO.File.Exists(newfullFileName)) { System.IO.File.Delete(newfullFileName); } } } return(View(model)); }
public ActionResult ImportServiceDecompositionSpreadsheet(string level, int id) { var vm = new ImportServiceDecompositionSpreadsheetViewModel { ServiceDeskId = id, EditLevel = level, HasServiceDeskContext = id != 0 }; vm.ReturnUrl = vm.HasServiceDeskContext ? Url.Action("Edit", "ServiceDesk", new { level = vm.EditLevel, id = vm.ServiceDeskId }) : Url.Action("Index", "ServiceDomain", new { level = vm.EditLevel, id = vm.ServiceDeskId }); if (_appUserContext.Current?.CurrentCustomer != null && _appUserContext.Current.CurrentCustomer.Id > 0) { var customerId = _appUserContext.Current.CurrentCustomer.Id; var serviceDesks = _serviceDeskService.GetByCustomer(customerId).ToList(); if (id > 0) { vm.ServiceDeskName = serviceDesks.First(x => x.Id == id).DeskName; } else if (serviceDesks.Count == 1) { vm.ServiceDeskId = serviceDesks.First().Id; vm.ServiceDeskName = serviceDesks.First().DeskName; vm.HasServiceDeskContext = true; } else { vm.ServiceDesks.AddRange(serviceDesks.Select(s => new SelectListItem { Text = s.DeskName, Value = s.Id.ToString(CultureInfo.InvariantCulture) }).ToList()); } } return(View("ImportServiceDecompositionSpreadsheet" + level, vm)); }