public ActionResult RouteConstructor(int?mode) { RouteConstructorModel model; var routes = _uow.Routes.Get().OrderBy(x => x.Id).ToList(); if (mode.HasValue && mode.Value == 1 || !routes.Any()) { model = new RouteConstructorModel { Id = 0, Name = string.Empty, Description = string.Empty, ImageId = 0, Cities = _uow.Cities.Get().ToSelectItemList(), Routes = new List <SelectListItem>(), Mode = 1 }; } else { model = new RouteConstructorModel { Id = routes.First().Id, Name = routes.First().Name, Description = routes.First().Description, ImageId = _uow.RouteImages.GetMainImage(routes.First().Id)?.Id ?? 0, CityId = routes.First().City.Id, Cities = _uow.Cities.Get().ToSelectItemList(), Routes = routes.ToSelectItemList(), Mode = 2 }; } return(View(model)); }
public async Task <ActionResult> SaveRoute(RouteConstructorModel model) { if (!ModelState.IsValid) { if (model.Mode == 2) { model.Routes = _uow.Routes.Get().ToSelectItemList(); } model.Cities = _uow.Cities.Get().ToSelectItemList(); return(View("RouteConstructor", model)); } var cityId = model.CityId == 0 ? 1 : model.CityId; var city = _uow.Cities.Get(cityId); var route = new Route { Id = model.Id, Name = model.Name, Description = model.Description, City = city }; if (model.Id == 0) { _uow.Routes.Add(route); if (model.Image != null) { var filename = model.Image.FileName; var filePathOriginal = Path.Combine(_env.WebRootPath, "Uploads/Originals"); var filePathReadyForUse = Path.Combine(_env.WebRootPath, "Uploads/ReadyForUse"); if (model.Image.Length > 0) { using (var stream = new FileStream(Path.Combine(filePathOriginal, filename), FileMode.Create)) { await model.Image.CopyToAsync(stream); } } using (var srcImage = System.Drawing.Image.FromFile(Path.Combine(filePathOriginal, filename))) using (var newImage = new Bitmap(100, 100)) using (var graphics = Graphics.FromImage(newImage)) { graphics.SmoothingMode = SmoothingMode.AntiAlias; graphics.InterpolationMode = InterpolationMode.HighQualityBicubic; graphics.PixelOffsetMode = PixelOffsetMode.HighQuality; graphics.DrawImage(srcImage, new Rectangle(0, 0, 200, 200)); var path = Path.Combine(filePathReadyForUse, filename.Replace(filename.Substring(filename.LastIndexOf(".")), ".png")); newImage.Save(path, ImageFormat.Png); var image = new RouteImage { Path = path, Route = route }; var result = _uow.RouteImages.Add(image); route.RouteImages.Add(result); } } await _uow.SaveChangesAsync(); } else { var existingRoute = _uow.Routes.Get(route.Id); _uow.Routes.Update(existingRoute); await _uow.SaveChangesAsync(); } return(RedirectToAction("LocationConstructor", "Location", new LocationConstructorModel { RouteId = route.Id })); }