public async Task <IActionResult> Add(AddDestinationViewModel model) { if (!string.IsNullOrWhiteSpace(model.Name) && await destinationService.ExistsAsync(model.Name)) { ModelState.AddModelError(nameof(model.Name), "Destination with the same name already exists."); } var invalidIds = await tagService.CheckForInvalidTagIds(model.SelectedTags); if (invalidIds.Any()) { ModelState.AddModelError(nameof(model.SelectedTags), $"Non-existing tags were selected. (Count: {invalidIds.Count})"); } if (!await regionService.ExistsAsync(model.RegionId)) { ModelState.AddModelError(nameof(model.RegionId), "Selected region does not exist."); } if (!ModelState.IsValid) { model.Tags = await GetTags(); model.Regions = await GetRegions(); return(View(model)); } await destinationService.AddAsync(model.Name, model.RegionId, model.SelectedTags); return(RedirectToAction(nameof(Add))); }
public async Task <object> AddAvailableDestination([FromBody] AddDestinationViewModel data) { if (await _service.CreateAvailableDestination(data.Company, data.Destination)) { return(Ok(new { Message = "Successfully created destination!" })); } return(Ok(new { Message = "Destination airport already exists!" })); }
public IActionResult Add() { List <DestinationCategory> categories = context.DestinationCategories.ToList(); List <Trail> trails = context.Trails.OrderBy(t => t.Name).ToList(); AddDestinationViewModel destination = new AddDestinationViewModel(categories, trails); return(View(destination)); }
//helper function for images private string UploadedFile(AddDestinationViewModel model) { string uniqueFileName = null; if (model.Image != null) { string uploadsFolder = Path.Combine(webHostEnvironment.WebRootPath, "images"); uniqueFileName = Guid.NewGuid().ToString() + "_" + model.Image.FileName; string filePath = Path.Combine(uploadsFolder, uniqueFileName); using (var fileStream = new FileStream(filePath, FileMode.Create)) { model.Image.CopyTo(fileStream); } } return(uniqueFileName); }
public IActionResult Add(AddDestinationViewModel viewModel) { string uniqueFileName = UploadedFile(viewModel); if (ModelState.IsValid && User.IsInRole("Admin")) { var userId = _userManager.GetUserId(User); DestinationCategory category = context.DestinationCategories.Find(viewModel.CategoryId); Trail trail = context.Trails.Find(viewModel.TrailId); if (!viewModel.Website.StartsWith("http")) { viewModel.Website = "https://" + viewModel.Website; } Destination newDestination = new Destination { Name = viewModel.Name, Street = viewModel.Street, City = viewModel.City, State = viewModel.State, Zipcode = viewModel.Zipcode, Description = viewModel.Description, Website = viewModel.Website, OutdoorSeating = viewModel.OutdoorSeating, BikeRacks = viewModel.BikeRacks, Restrooms = viewModel.Restrooms, Playground = viewModel.Playground, Category = category, Trail = trail, CategoryId = viewModel.CategoryId, TrailId = viewModel.TrailId, Image = uniqueFileName, UserId = userId }; context.Destinations.Add(newDestination); context.SaveChanges(); int id = newDestination.Id; return(Redirect("/destination/detail/" + id)); } else if (ModelState.IsValid && User.Identity.IsAuthenticated) { var userId = _userManager.GetUserId(User); DestinationCategory category = context.DestinationCategories.Find(viewModel.CategoryId); Trail trail = context.Trails.Find(viewModel.TrailId); if (!viewModel.Website.StartsWith("http")) { viewModel.Website = "https://" + viewModel.Website; } UserDestination newUserDestination = new UserDestination { Name = viewModel.Name, Street = viewModel.Street, City = viewModel.City, State = viewModel.State, Zipcode = viewModel.Zipcode, Description = viewModel.Description, Website = viewModel.Website, OutdoorSeating = viewModel.OutdoorSeating, BikeRacks = viewModel.BikeRacks, Restrooms = viewModel.Restrooms, Playground = viewModel.Playground, Category = category, Trail = trail, CategoryId = viewModel.CategoryId, TrailId = viewModel.TrailId, Image = uniqueFileName, UserId = userId }; context.UserDestinations.Add(newUserDestination); context.SaveChanges(); return(Redirect("/Destination/UserDestinations/")); } //repopulate SelectListItems List <DestinationCategory> categories = context.DestinationCategories.ToList(); List <Trail> trails = context.Trails.ToList(); List <SelectListItem> categoryList = new List <SelectListItem>(); foreach (var c in categories) { categoryList.Add(new SelectListItem { Value = c.Id.ToString(), Text = c.Name }); } List <SelectListItem> trailList = new List <SelectListItem>(); foreach (var t in trails) { trailList.Add(new SelectListItem { Value = t.Id.ToString(), Text = t.Name }); } viewModel.Category = categoryList; viewModel.Trail = trailList; return(View(viewModel)); }