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)));
        }
Exemplo n.º 2
0
 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!" }));
 }
Exemplo n.º 3
0
        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));
        }
Exemplo n.º 4
0
        //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);
        }
Exemplo n.º 5
0
        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));
        }