public void TestUpdate_ShouldSucceed()
        {
            //Get valid tourArtefact
            TourArtefactDto tourArtefact = GetTourArtefact();

            tourArtefact.Id   = 1;
            tourArtefact.Tour = new TourSimpleDto {
                Id = CreateTestTour().Id, Name = CreateTestTour().Name
            };
            tourArtefact.Artefact = new ArtefactSimpleDto {
                Id = CreateTestArtefact().Id, Name = CreateTestArtefact().Name
            };
            tourArtefact.Order = 7;

            _controller.Update(tourArtefact);
            TourArtefactDto updatedTourArtefact = _controller.Update(tourArtefact);

            Assert.IsNotNull(updatedTourArtefact);
            Assert.IsNotNull(updatedTourArtefact.Id);
            Assert.IsNotNull(updatedTourArtefact.Tour.Id);
            Assert.IsNotNull(updatedTourArtefact.Artefact.Id);


            Assert.AreEqual(tourArtefact.Artefact.Name, updatedTourArtefact.Artefact.Name);
            Assert.AreEqual(tourArtefact.Order, updatedTourArtefact.Order);
        }
        public void TestCreate_ShouldSucceed()
        {
            //Set up dto
            TourArtefactDto tourArtefact = new TourArtefactDto()
            {
                Tour = new TourSimpleDto {
                    Id = CreateTestTour().Id, Name = CreateTestTour().Name
                },
                Artefact = new ArtefactSimpleDto {
                    Id = CreateTestArtefact().Id, Name = CreateTestArtefact().Name
                },
                Order = 5
            };

            //Make test request
            TourArtefactDto tourArtefactResult = _controller.Create(tourArtefact);

            //Assert Values
            Assert.IsNotNull(tourArtefactResult);
            Assert.IsNotNull(tourArtefactResult.Id);
            Assert.IsTrue(tourArtefactResult.Id != 0);
            Assert.IsNotNull(tourArtefactResult.Tour);
            Assert.IsNotNull(tourArtefactResult.Artefact);

            Assert.AreEqual(tourArtefact.Tour.Id, tourArtefactResult.Tour.Id);
            Assert.AreEqual(tourArtefact.Tour.Name, tourArtefactResult.Tour.Name);
            Assert.AreEqual(tourArtefact.Artefact.Id, tourArtefactResult.Artefact.Id);
            Assert.AreEqual(tourArtefact.Artefact.Name, tourArtefactResult.Artefact.Name);

            Assert.AreEqual(tourArtefact.Order, tourArtefactResult.Order);
            Assert.IsNotNull(tourArtefactResult.CreatedDate);
            Assert.IsNotNull(tourArtefactResult.ModifiedDate);
        }
        public TourArtefactDto Update(TourArtefactDto dto)
        {
            if (dto.Order < 0)
            {
                throw new ArgumentNullException("Order must be a position Number");
            }

            var tour = Db.Tours.Find(dto.Tour.Id);

            if (tour == null || (tour.Artefacts == null))             // && tour.Artefacts.Any(m => m.Id != dto.Id && m.Order == dto.Order)))
            {
                throw new HttpResponseException(HttpStatusCode.BadRequest);
            }

            TourArtefact tourArtefact = Db.TourArtefacts.Include("Artefact").Include("Tour").FirstOrDefault(m => m.Id == dto.Id);

            if (tourArtefact == null)
            {
                throw new HttpResponseException(HttpStatusCode.NotFound);
            }

            tourArtefact.Order        = dto.Order;
            tourArtefact.ModifiedDate = DateTime.UtcNow;

            Db.SaveChanges();

            return(Mapper.Map <TourArtefactDto>(tourArtefact));
        }
        public TourArtefactDto Create(TourArtefactDto dto)
        {
            if (dto.Order < 0)
            {
                throw new ArgumentNullException("Order must be a position Number");
            }

            var tour = Db.Tours.Find(dto.Tour.Id);

            if (tour == null || (tour.Artefacts != null && tour.Artefacts.Any(m => m.Order == dto.Order)))
            {
                throw new HttpResponseException(HttpStatusCode.BadRequest);
            }

            TourArtefact tourArtefact = new TourArtefact()
            {
                Order        = dto.Order,
                Artefact     = Db.Artefacts.Find(dto.Artefact.Id),
                Tour         = Db.Tours.Find(dto.Tour.Id),
                CreatedDate  = DateTime.UtcNow,
                ModifiedDate = DateTime.UtcNow,
                IsDeleted    = false
            };

            Db.TourArtefacts.Add(tourArtefact);

            Db.SaveChanges();

            return(Mapper.Map <TourArtefactDto>(tourArtefact));
        }
 public TourArtefactDto Update([FromBody] TourArtefactDto dto)
 {
     try
     {
         return(new TourArtefactHandler(isTest).Update(dto));
     }
     catch (Exception ex)
     {
         throw;
     }
 }
        public async Task <ActionResult> Create(TourArtefactDto tourArtefact, int?tourId)
        {
            // Checks Order is not Negative or Empty
            if (tourArtefact.Order < 0 || tourArtefact.Order == null)
            {
                ViewBag.OrderValidation = "Order must be a positive integer.";
                return(View(tourArtefact));
            }
            bool tour_Selected = tourId.HasValue;
            //TOUR CATEGORY
            List <SelectListItem> tourDropdown = new List <SelectListItem>();

            if (tour_Selected)
            {
                tourDropdown = await PopulateTourDropdown(tour_Selected, tourId);
            }
            else
            {
                tourDropdown = await PopulateTourDropdown(tour_Selected, null);
            }
            ViewBag.TourList = tourDropdown;
            //ARTEFACT DROPDOWN
            List <SelectListItem> artefactDropdown = new List <SelectListItem>();

            artefactDropdown = await PopulateArtefactDropdown();

            ViewBag.ArtefactList = artefactDropdown;

            ViewBag.TourID = tourId.ToString();

            var     tourRequest = new HTTPrequest();
            TourDto tourCheck   = await tourRequest.Get <TourDto>("api/tour/" + tourArtefact.Tour.Id);

            TourArtefactDto newTourArtefact = new TourArtefactDto();

            if (tourCheck.Artefacts.Any(m => m.Order == tourArtefact.Order) && tourCheck.Artefacts.Any(m => m.Id == tourArtefact.Artefact.Id))
            {
                ViewBag.IndexAvail = false;
                return(View(newTourArtefact));
            }

            newTourArtefact.Artefact = await tourRequest.Get <ArtefactSimpleDto>("api/artefact/" + tourArtefact.Artefact.Id);

            TourSimpleDto tour = await tourRequest.Get <TourSimpleDto>("api/tour/" + tourArtefact.Tour.Id);

            newTourArtefact.Tour         = tour;
            newTourArtefact.Order        = tourArtefact.Order;
            newTourArtefact.CreatedDate  = DateTime.Now;
            newTourArtefact.ModifiedDate = DateTime.Now;
            var request = new HTTPrequest();
            await request.Post <TourArtefactDto>("api/tourArtefact", newTourArtefact);

            return(RedirectToAction("Index", "ToursArtefacts", new { tId = newTourArtefact.Tour.Id, recentAction = "Created", recentNameT = newTourArtefact.Tour.Name, recentIdT = newTourArtefact.Tour.Id, recentNameA = newTourArtefact.Artefact.Name, recentIdA = newTourArtefact.Artefact.Id }));
        }
        public void TestGetById_ValidId()
        {
            //Get a valid tourArtefact
            TourArtefactDto validtourArtefact = GetTourArtefact();

            //Try to get this tourArtefact
            TourArtefactDto tourArtefactResult = _controller.GetById(validtourArtefact.Id);

            Assert.IsNotNull(tourArtefactResult);
            Assert.IsNotNull(tourArtefactResult.Id);
            Assert.AreEqual(validtourArtefact.Id, tourArtefactResult.Id);
        }
        public void TestUpdate_NoTour()
        {
            //Get valid tourArtefact
            TourArtefactDto tourArtefact = GetTourArtefact();

            tourArtefact.Id       = 1;
            tourArtefact.Tour     = null;
            tourArtefact.Artefact = new ArtefactSimpleDto {
                Id = CreateTestArtefact().Id, Name = CreateTestArtefact().Name
            };
            tourArtefact.Order = 5;

            _controller.Update(tourArtefact);
        }
        public void TestCreate_NoArtefact()
        {
            //Set up dto
            TourArtefactDto tourArtefact = new TourArtefactDto()
            {
                Tour = new TourSimpleDto {
                    Id = CreateTestTour().Id, Name = CreateTestTour().Name
                },
                Artefact = null,
                Order    = -16,
            };

            _controller.Create(tourArtefact);
        }
        public void TestGetFiltered_AllFilters()
        {
            //Create TourArtefact for getfiltered validation
            TourArtefactDto validtourArtefact = CreateTestTourArtefact();

            var results = _controller.GetFiltered(new TourArtefactFilter()
            {
                isDeleted = false, numPerPage = 100, pageNumber = 0
            });

            Assert.IsNotNull(results);
            Assert.IsTrue(!results.Any(m => m.IsDeleted));
            Assert.IsTrue(results.Count <= 100);
            Assert.IsTrue(results.Count == results.Distinct().Count());
        }
        public void TestDelete_ValidId()
        {
            //Get valid tourArtefact
            TourArtefactDto validtourArtefact = GetTourArtefact();

            //Delete tourArtefact
            bool result = _controller.Delete(validtourArtefact.Id);

            Assert.IsTrue(result);

            //Get tourArtefact for comparison
            TourArtefactDto tourArtefactResult = _controller.GetById(validtourArtefact.Id);

            Assert.IsNotNull(tourArtefactResult);
            Assert.IsNotNull(tourArtefactResult.Id);
            Assert.AreEqual(validtourArtefact.Id, tourArtefactResult.Id);
            Assert.IsTrue(tourArtefactResult.IsDeleted);
        }
        public void TestGetFiltered_IsDeleted()
        {
            //Create a tourArtefact to test on
            TourArtefactDto validtourArtefact = CreateTestTourArtefact();

            //delete for test
            _controller.Delete(validtourArtefact.Id);

            var results = _controller.GetFiltered(new TourArtefactFilter()
            {
                isDeleted = true, numPerPage = 100, pageNumber = 0
            });

            Assert.IsNotNull(results);
            Assert.IsTrue(!results.Any(m => !m.IsDeleted));
            Assert.IsTrue(results.Count <= 100);
            Assert.IsTrue(results.Count == results.Distinct().Count());
        }
        // GET: TourDtoes/Delete/5
        public async Task <ActionResult> Delete(int?id)
        {
            if (id == null)
            {
                return(RedirectToAction("Index", "Tours"));

                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            var             request      = new HTTPrequest();
            TourArtefactDto tourArtefact = await request.Get <TourArtefactDto>("api/tourArtefact/" + id);

            ViewBag.TourArtefactId = id;
            if (tourArtefact == null)
            {
                return(HttpNotFound());
            }
            return(View(tourArtefact));
        }
        // GET: TourDtoes/Edit/5
        public async Task <ActionResult> Edit(int?id)
        {
            bool tour_Selected = id.HasValue;

            ViewBag.TourSelected = tour_Selected;

            var request = new HTTPrequest();

            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            TourArtefactDto tourArtefact = await request.Get <TourArtefactDto>("api/tourArtefact/" + id);

            if (tourArtefact == null)
            {
                return(HttpNotFound());
            }


            //TOUR CATEGORY
            List <SelectListItem> tourDropdown = new List <SelectListItem>();

            tourDropdown = await PopulateTourDropdown(tour_Selected, tourArtefact.Tour.Id);

            ViewBag.TourList = tourDropdown;

            //GET Artefact and Pass through ViewBag
            var requestArtefact        = new HTTPrequest();
            ArtefactSimpleDto artefact = await requestArtefact.Get <ArtefactSimpleDto>("api/artefact/" + tourArtefact.Artefact.Id);

            ViewBag.artefact = artefact;


            //ARTEFACT CATEGORY DROPDOWN
            List <SelectListItem> artefactDropdown = new List <SelectListItem>();

            artefactDropdown = await PopulateArtefactDropdown();

            ViewBag.ArtefactList = artefactDropdown;


            return(View(tourArtefact));
        }
        public void TestUpdate_InvalidId()
        {
            //Get valid tourArtefact
            TourArtefactDto tourArtefact = GetTourArtefact();

            TourArtefactDto updatedTourArtefact = new TourArtefactDto()
            {
                Id   = 0,
                Tour = new TourSimpleDto {
                    Id = CreateTestTour().Id, Name = CreateTestTour().Name
                },
                Artefact = new ArtefactSimpleDto {
                    Id = CreateTestArtefact().Id, Name = CreateTestArtefact().Name
                },
                Order = 5
            };

            _controller.Update(updatedTourArtefact);
        }
        public async Task <ActionResult> DeleteConfirmed(int id)
        {
            try
            {
                var             request      = new HTTPrequest();
                TourArtefactDto tourArtefact = await request.Get <TourArtefactDto>("api/tourArtefact/" + id);

                tourArtefact.IsDeleted = true;
                int tourId = tourArtefact.Tour.Id;
                //    await request.Put<TourArtefactDto>("api/tourArtefact", tourArtefact);

                await request.Delete("api/tourArtefact/" + id.ToString());

                return(RedirectToAction("Index", "ToursArtefacts", new { tId = tourId, recentAction = "Deleted", recentNameT = tourArtefact.Tour.Name, recentIdT = tourArtefact.Tour.Id, recentNameA = tourArtefact.Artefact.Name, recentIdA = tourArtefact.Artefact.Id }));
            }
            catch (Exception)
            {
                throw;
            }
        }
        TourArtefactDto CreateTestTourArtefact()
        {
            TourSimpleDto newTour = new TourSimpleDto {
                Id = CreateTestTour().Id, Name = CreateTestTour().Name
            };
            ArtefactSimpleDto newArtefact = new ArtefactSimpleDto {
                Id = CreateTestArtefact().Id, Name = CreateTestArtefact().Name
            };


            TourArtefactDto tourArtefact = new TourArtefactDto()
            {
                Id       = 1,
                Tour     = newTour,
                Artefact = newArtefact,
                Order    = 5
            };

            tourArtefact = _controller.Create(tourArtefact);

            return(tourArtefact);
        }