public ActionResult Create(ServerAddViewModel viewmodel) { if (ModelState.IsValid) { // check if vendor id already exists. if (_serverService.GetByVendorId(viewmodel.VendorId) == null) { var entity = Mapper.Map <ServerAddViewModel, Server>(viewmodel); _serverService.AddServer(entity); Success($"<strong>{entity.FullName}</strong> was successfully added."); return(RedirectToAction("Index")); } else { Danger($"A server with same Id <strong>{viewmodel.VendorId}</strong> already exists."); } } viewmodel.AvailableCategories = _serverService.GetCategories().Select(t => new SelectListItem() { Text = t.Name, Value = t.Id.ToString() }).ToList(); viewmodel.AvailableElements = _elementService.GetElements().Select(t => new SelectListItem() { Text = t.DisplayName, Value = t.Id.ToString() }).ToList(); return(View(viewmodel)); }
public ActionResult Create() { var viewmodel = new ServerAddViewModel(); viewmodel.AvailableCategories = _serverService.GetCategories().Select(t => new SelectListItem() { Text = t.Name, Value = t.Id.ToString() }).ToList(); viewmodel.AvailableElements = _elementService.GetElements().Select(t => new SelectListItem() { Text = t.DisplayName, Value = t.Id.ToString() }).ToList(); return(View(viewmodel)); }
public ActionResult Upload(UploadedExcelSheetViewModel viewmodel) { if (ModelState.IsValid) // validate file exist { if (viewmodel.ExcelFile != null && viewmodel.ExcelFile.ContentLength > 0) { var fileName = Path.GetFileName(viewmodel.ExcelFile.FileName); var path = Path.Combine(Server.MapPath("~/Uploads/Servers/"), DateTime.Now.GetTimeStamp() + "_" + fileName); List <Server> addedServers = new List <Server>(); viewmodel.ExcelFile.SaveAs(path); // save a copy of the uploaded file. // convert the uploaded file into datatable, then add/update db entities. var dtServers = ImportUtils.ImportXlsxToDataTable(viewmodel.ExcelFile.InputStream, true); int numOfServersUpdated = 0; foreach (var row in dtServers.AsEnumerable().ToList()) { var entityViewModel = new ServerAddViewModel() { VendorId = int.Parse(row["Staff"].ToString()), // some columns does not have ',' separater. FirstName = row["Sort Name"].ToString().Split(new char[] { ',', ' ' }, StringSplitOptions.RemoveEmptyEntries)[1], LastName = row["Sort Name"].ToString().Split(new char[] { ',', ' ' }, StringSplitOptions.RemoveEmptyEntries)[0], GpEmpNumber = !string.IsNullOrWhiteSpace(row["Gp Emp #"].ToString()) ? row["Gp Emp #"].ToString() : null, ElementId = !string.IsNullOrWhiteSpace(row["Element"].ToString()) ? int.Parse(row["Element"].ToString()) : (int?)null, Active = row["active"].ToString() == "Y" ? true : false, CategoryId = CategoryConverter.ConvertFromCategoryNameToId(row["Category"].ToString()) }; //check if server does not exist if (entityViewModel.VendorId != 0) { if (entityViewModel.ElementId.HasValue) { var existedElement = _elementService.GetByVendorId(entityViewModel.ElementId.Value); if (existedElement == null) { Danger($"Invalid Element Id with value ={entityViewModel.ElementId.Value}"); continue; } else { entityViewModel.ElementId = existedElement.Id; } } var existedEntity = _serverService.GetByVendorId(entityViewModel.VendorId); if (existedEntity == null) { var entity = Mapper.Map <ServerAddViewModel, Server>(entityViewModel); addedServers.Add(entity); } else { Mapper.Map(entityViewModel, existedEntity); _serverService.UpdateServer(existedEntity); numOfServersUpdated++; } } } if (addedServers.Any()) { _serverService.AddServers(addedServers); } Success($"<strong>{addedServers.Count}</strong> servers have been successfully added. <br\\>" + $"<strong>{numOfServersUpdated}</strong> servers have been successfully updated."); } return(RedirectToAction("Index")); } return(View(viewmodel)); }