public void TestUpdateSportObjectMethodReturnFalse()
        {
            //Arrange
            var sportobjects = new SportObject[]
            {
                new SportObject {
                    Name = "sportobject 1"
                },
                new SportObject {
                    Name = "sportobject 2"
                },
                new SportObject {
                    Name = "sportobject 3"
                },
                new SportObject {
                    Name = "sportobject 4"
                }
            };
            var mockRepo = new Mock <ISportRepository>();

            mockRepo.Setup(s => s.GetAllSportObjects()).Returns(sportobjects);
            var manager            = new SportManager(mockRepo.Object);
            var updatedSportObject = new SportObject {
                SportObjectId = 6, Name = "VoetBall"
            };

            //Act
            var result = manager.UpdateSportObject(updatedSportObject);

            //Assert
            Assert.False(result);
        }
        public void TestUpdateInvalidSportObjectRedirectsToIndexAction()
        {
            var model = new SportObjectModel
            {
                Sport = new Sport {
                    SportId = 1, Name = "testsport"
                },

                SportObject = new SportObject {
                    SportObjectId = 3, Name = "TestOBJECT"
                }
            };
            var mockManager  = new Mock <ISportManager>();
            var mockTempData = new Mock <ITempDataDictionary>();
            var controller   = new SportController(mockManager.Object)
            {
                TempData = mockTempData.Object
            };

            controller.ModelState.AddModelError("", "");
            mockManager.Setup(x => x.UpdateSportObject(It.IsAny <SportObject>())).Throws <Exception>();

            var objectToTest = new SportObject
            {
                SportObjectId = 3,
                Name          = "Test"
            };

            //Act
            var result = (ViewResult)controller.UpdateObject(objectToTest);

            //Assert
            Assert.True(result.ViewName == "UpdateObject");
        }
        public void TestDeleteSportObjectMethodReturnTrueIfExist()
        {
            //Arrange

            var sportobjects = new SportObject[]
            {
                new SportObject {
                    Name = "sportobject 1"
                },
                new SportObject {
                    Name = "sportobject 2"
                },
                new SportObject {
                    Name = "sportobject 3"
                },
                new SportObject {
                    Name = "sportobject 4"
                }
            };
            var mockRepo = new Mock <ISportRepository>();

            mockRepo.Setup(s => s.GetAllSportObjects()).Returns(sportobjects);
            var manager = new SportManager(mockRepo.Object);

            //Act
            var result      = manager.DeleteSportObject(sportobjects[1]);
            var resultFalse = manager.DeleteSportObject(new SportObject()
            {
                Name = "sportobject 5"
            });

            //Assert
            Assert.True(result);
            Assert.False(resultFalse);
        }
        public void AddSportObjectMethodReturnsTrueIfNewEntry()
        {
            //Arrange

            var sportobjects = new SportObject
            {
                Name = "KongballObject"
            };
            var dummysport = new Sport
            {
                Name = "KongBall",
            };
            var mockRepo = new Mock <ISportRepository>();

            mockRepo.Setup(s => s.AddSportObject(dummysport, sportobjects));
            var manager = new SportManager(mockRepo.Object);



            //Act
            var result = manager.AddSportObject(dummysport, sportobjects);

            //Assert
            Assert.True(result);
        }
        public void TestUpdateSportObjectRedirectsToIndexAction()
        {
            //Arrange

            var model = new SportObjectModel
            {
                Sport = new Sport {
                    SportId = 1, Name = "testsport"
                },

                SportObject = new SportObject {
                    SportObjectId = 3, Name = "TestOBJECT"
                }
            };
            var mockManager  = new Mock <ISportManager>();
            var mockTempData = new Mock <ITempDataDictionary>();
            var controller   = new SportController(mockManager.Object)
            {
                TempData = mockTempData.Object
            };

            mockManager.Setup(x => x.UpdateSportObject(It.IsAny <SportObject>())).Throws <Exception>();

            var objectToTest = new SportObject
            {
                SportObjectId = 3,
                Name          = "Test"
            };

            //Act
            var result = controller.UpdateObject(objectToTest);

            //Assert
            Assert.IsType(typeof(RedirectToActionResult), result);
        }
        public async Task <IActionResult> Edit(int id, [Bind("Id,ObjectType,City,Street,BuildingNumber")] SportObject sportObject)
        {
            if (id != sportObject.Id)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(sportObject);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!SportObjectExists(sportObject.Id))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            return(View(sportObject));
        }
        public ActionResult UpdateObject(SportObject sportObject)
        {
            if (!ModelState.IsValid)
            {
                return(View("UpdateObject"));
            }
            try
            {
                SportObject original = _iSportManager.ReadSportObject(sportObject.SportObjectId);

                if (original != null)
                {
                    original.Name              = sportObject.Name;
                    original.SportObjectHalls  = sportObject.SportObjectHalls;
                    original.SportObjectSports = sportObject.SportObjectSports;

                    _iSportManager.UpdateSportObject(original);
                    TempData["notification"] = sportObject.Name.UpdateMessage("Materiaal");
                }
            }
            catch (Exception)
            {
                TempData["notification"] = sportObject.Name.ErrorUpdateMessage("Materiaal");
            }
            return(RedirectToAction("Index"));
        }
示例#8
0
 public bool DeleteSportObject(SportObject sportObject)
 {
     if (SportObjects().Any(o => o.Name == sportObject.Name))
     {
         _sportRepository.DeleteSportObject(sportObject);
         return(true);
     }
     return(false);
 }
示例#9
0
 public bool UpdateSportObject(SportObject sportObject)
 {
     if (SportObjects().Any(o => o.SportObjectId == sportObject.SportObjectId))
     {
         _sportRepository.UpdateSportObject(sportObject);
         return(true);
     }
     return(false);
 }
        public SportObject Update(SportObject sportObjectChanges)
        {
            var sportObject = context.SportObjects.Attach(sportObjectChanges);

            sportObject.State = Microsoft.EntityFrameworkCore.EntityState.Modified;
            context.SaveChanges();

            return(sportObjectChanges);
        }
示例#11
0
        public void AddSportObject(Sport sport, SportObject sportObject)
        {
            _sportContext.SportObjects.Add(sportObject);
            SportObjectSport sportObjectSport = new SportObjectSport
            {
                Sport = sport, SportId = sport.SportId, SportObject = sportObject, SportObjectId = sportObject.SportObjectId
            };

            _sportContext.SportObjectSports.Add(sportObjectSport);
            _sportContext.SaveChanges();
        }
        public async Task <IActionResult> Create([Bind("Id,ObjectType,City,Street,BuildingNumber")] SportObject sportObject)
        {
            if (ModelState.IsValid)
            {
                _context.Add(sportObject);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            return(View(sportObject));
        }
示例#13
0
 public bool AddSportObject(Sport sport, SportObject sportObject)
 {
     if (SportObjects().All(o => o.Name != sportObject.Name))
     {
         _sportRepository.AddSportObject(sport, sportObject);
         return(true);
     }
     else
     {
         return(false);
     }
 }
        public SportObject Delete(int id)
        {
            SportObject sportObject = context.SportObjects.Find(id);

            if (sportObject != null)
            {
                context.SportObjects.Remove(sportObject);
                context.SaveChanges();
            }

            return(sportObject);
        }
示例#15
0
        public async Task <bool> CheckIfClientIsOwnerAsync(SportObject sportObject)
        {
            var userId = _currentUserService.UserId;

            var user = await _userManager.FindByIdAsync(userId);

            var isClient = await _userManager.IsInRoleAsync(user, RolesEnum.Client);

            if (!isClient && user.Email != sportObject.Email)
            {
                return(false);
            }

            return(true);
        }
        public async Task <IActionResult> EditSportObject(int id)
        {
            SportObject model = sportObjectRepository.Get(id);
            SportObjectEditViewModel sportObjectEditViewModel = new SportObjectEditViewModel
            {
                Id                 = model.Id,
                Name               = model.Name,
                Email              = model.Email,
                Address            = model.Address,
                CityId             = model.CityId,
                WorkEnds           = model.WorkEnds,
                WorkStarts         = model.WorkStarts,
                Description        = model.Description,
                SportId            = model.SportId,
                Phone              = model.Phone,
                PriceForHour       = model.PriceForHour,
                IsPayed            = model.IsPayed,
                ExistingImage1Path = model.Image1Path,
                ExistingImage2Path = model.Image2Path,
                Cities             = sportObjectRepository.GetAllCities(),
                Sports             = sportObjectRepository.GetAllSports()
            };

            if (User.IsInRole("Client"))
            {
                var user = await userManager.FindByIdAsync(User.FindFirstValue(ClaimTypes.NameIdentifier));

                if (user == null)
                {
                    ViewBag.ErrorMessage = $"User with ID = {user.Id} cannot be found";
                    return(View("NotFound"));
                }

                if (user.Email != model.Email)
                {
                    return(RedirectToAction("AccessDenied", "Administration"));
                }
            }

            return(View(sportObjectEditViewModel));
        }
示例#17
0
        public async Task <int> Handle(CreateSportObjectCommand request, CancellationToken cancellationToken)
        {
            var sportObject = new SportObject
            {
                Email       = request.Email,
                Name        = request.Name,
                Address     = request.Address,
                Phone       = request.Phone,
                Description = request.Description,
                IsPayed     = request.IsPayed,
                IsPremium   = request.IsPremium,
                SportId     = request.SportId,
                CityId      = request.CityId
            };

            _context.SportObjects.Add(sportObject);

            await _context.SaveChangesAsync(cancellationToken);

            return(sportObject.Id);
        }
        public void FailedAddSportObject()
        {
            var dummysportobject = new SportObject
            {
                Name = "sportobject 1",
            };
            var dummysport = new Sport
            {
                Name = "KongBall",
            };
            var sportobjects = new SportObject[]
            {
                new SportObject {
                    Name = "sportobject 1"
                },
                new SportObject {
                    Name = "sportobject 2"
                },
                new SportObject {
                    Name = "sportobject 3"
                },
                new SportObject {
                    Name = "sportobject 4"
                }
            };
            var mockRepo = new Mock <ISportRepository>();

            mockRepo.Setup(s => s.GetAllSportObjects()).Returns(sportobjects);
            mockRepo.Setup(x => x.AddSportObject(dummysport, dummysportobject));
            var manager = new SportManager(mockRepo.Object);



            //Act
            var result = manager.AddSportObject(dummysport, dummysportobject);

            //Assert
            Assert.False(result);
        }
示例#19
0
        private void ChangeExistingPrice(SportObject sportObject, Price price)
        {
            var timeDifference = 0;
            var midnightHours  = 24;
            var hours          = 0;

            if (price.TimeTo.Hours == 0)
            {
                timeDifference = midnightHours - price.TimeFrom.Hours;
                hours          = 23;
            }
            else
            {
                timeDifference = price.TimeTo.Hours - price.TimeFrom.Hours;
                hours          = price.TimeTo.Hours - 1;
            }

            if (timeDifference > 1)
            {
                price.TimeTo = new TimeSpan(hours, 0, 0);
            }
            else if (timeDifference == 1)
            {
                var priceBefore = sportObject.Prices.FirstOrDefault(p => p.TimeTo == price.TimeFrom);

                price.TimeFrom = new TimeSpan(price.TimeFrom.Hours - 1, 0, 0);
                price.TimeTo   = new TimeSpan(hours, 0, 0);

                if (priceBefore == null)
                {
                    return;
                }

                ChangeExistingPrice(sportObject, priceBefore);
            }

            return;
        }
        public void GetAllSportObjectsMethodReturnListWithSportsObjects()
        {
            //Arrange
            var sportobjects = new SportObject[]
            {
                new SportObject {
                    Name = "sportobject 1"
                },
                new SportObject {
                    Name = "sportobject 2"
                },
                new SportObject {
                    Name = "sportobject 3"
                },
                new SportObject {
                    Name = "sportobject 4"
                }
            };
            var mockRepo = new Mock <ISportRepository>();

            mockRepo.Setup(s => s.GetAllSportObjects()).Returns(sportobjects);
            var manager = new SportManager(mockRepo.Object);
        }
        public IActionResult CreateSportObject(SportObjectCreateViewModel model)
        {
            if (ModelState.IsValid)
            {
                string uniqueFileName1 = ProcessUploadFile(model.Image1);
                string uniqueFileName2 = ProcessUploadFile(model.Image2);

                SportObject newSportObject = new SportObject {
                    Name         = model.Name,
                    Email        = model.Email,
                    Address      = model.Address,
                    CityId       = model.CityId,
                    WorkEnds     = model.WorkEnds,
                    WorkStarts   = model.WorkStarts,
                    Description  = model.Description,
                    SportId      = model.SportId,
                    Phone        = model.Phone,
                    PriceForHour = model.PriceForHour,
                    IsPayed      = model.IsPayed,
                    Image1Path   = uniqueFileName1,
                    Image2Path   = uniqueFileName2
                };

                sportObjectRepository.Add(newSportObject);

                return(RedirectToAction("Details", "SportObject", new { id = newSportObject.Id }));
            }
            else
            {
                var sportObject = new SportObjectCreateViewModel {
                    Cities = sportObjectRepository.GetAllCities(),
                    Sports = sportObjectRepository.GetAllSports()
                };

                return(View("CreateSportObject", sportObject));
            }
        }
示例#22
0
 public void UpdateSportObject(SportObject sportObject)
 {
     _sportContext.SportObjects.Update(sportObject);
     _sportContext.SaveChanges();
 }
        public List <FreeTermDto> GetFreeTerms(SportObject sportObject)
        {
            var workingHours = sportObject.WorkingHours.ToList();

            if (!workingHours.Any())
            {
                throw new Exception("Sport object doesn't have working hours");
            }

            var maxTimeWorkingHour = sportObject.WorkingHours.Min(wh => wh.CloseTime);

            if (maxTimeWorkingHour.Hours != 0)
            {
                maxTimeWorkingHour = sportObject.WorkingHours.Max(wh => wh.CloseTime);
            }

            var prices = sportObject.Prices.ToList();

            if (!prices.Any())
            {
                throw new Exception("Sport object doesn't have prices");
            }

            var futureDays   = 7;
            var reservations = sportObject.Reservations
                               .Where(r => r.Date >= DateTime.Today && r.Date <= DateTime.Today.AddDays(futureDays))
                               .ToList();

            var freeTerms = new List <FreeTermDto>();

            for (int i = 0; i <= futureDays; i++)
            {
                var date           = DateTime.Today.AddDays(i);
                var day            = (int)date.DayOfWeek == 0 ? 7 : (int)date.DayOfWeek;
                var wh             = workingHours.Find(w => w.Day == day);
                var openTimeHours  = wh.OpenTime.Hours;
                var closeTimeHours = wh.CloseTime.Hours;

                if (closeTimeHours == 0)
                {
                    closeTimeHours = 24;
                }

                for (int j = openTimeHours; j < closeTimeHours; j++)
                {
                    var startTime = new TimeSpan(j, 0, 0);
                    var endTime   = startTime.Add(TimeSpan.FromHours(1));

                    if (startTime.Hours == 23)
                    {
                        endTime = new TimeSpan(0, 0, 0);
                    }

                    var price = sportObject.Prices.SingleOrDefault(p => startTime >= p.TimeFrom && startTime < p.TimeTo && p.TimeTo != maxTimeWorkingHour);

                    if (price == null)
                    {
                        price = sportObject.Prices.SingleOrDefault(p => p.TimeTo == maxTimeWorkingHour);
                    }

                    var freeTerm = new FreeTermDto
                    {
                        Date      = date,
                        StartTime = startTime,
                        Price     = price.PricePerHour
                    };

                    freeTerms.Add(freeTerm);
                }
            }

            List <FreeTermDto> output = new List <FreeTermDto>();

            foreach (var ft in freeTerms)
            {
                output.Add(ft);

                foreach (var res in reservations)
                {
                    if (ft.Date == res.Date && ft.StartTime == res.StartTime)
                    {
                        output.Remove(ft);
                    }
                }
            }

            return(output);
        }
        public IActionResult EditSportObject(SportObjectEditViewModel model)
        {
            if (ModelState.IsValid)
            {
                SportObject sportObject = sportObjectRepository.Get(model.Id);
                sportObject.Name         = model.Name;
                sportObject.Email        = model.Email;
                sportObject.Address      = model.Address;
                sportObject.CityId       = model.CityId;
                sportObject.WorkEnds     = model.WorkEnds;
                sportObject.WorkStarts   = model.WorkStarts;
                sportObject.Description  = model.Description;
                sportObject.SportId      = model.SportId;
                sportObject.Phone        = model.Phone;
                sportObject.PriceForHour = model.PriceForHour;
                sportObject.IsPayed      = model.IsPayed;

                if (model.Image1 != null)
                {
                    if (model.ExistingImage1Path != null)
                    {
                        string filePath = Path.Combine(webHostEnvironment.WebRootPath, "images", model.ExistingImage1Path);
                        System.IO.File.Delete(filePath);
                    }
                    sportObject.Image1Path = ProcessUploadFile(model.Image1);
                }

                if (model.Image2 != null)
                {
                    if (model.ExistingImage2Path != null)
                    {
                        string filePath = Path.Combine(webHostEnvironment.WebRootPath, "images", model.ExistingImage2Path);
                        System.IO.File.Delete(filePath);
                    }
                    sportObject.Image2Path = ProcessUploadFile(model.Image2);
                }

                sportObjectRepository.Update(sportObject);

                return(RedirectToAction("Details", "SportObject", new { id = sportObject.Id }));
            }

            //return RedirectToAction("EditSportObject");

            SportObject modelOld = sportObjectRepository.Get(model.Id);
            SportObjectEditViewModel sportObjectEditViewModel = new SportObjectEditViewModel
            {
                Id                 = modelOld.Id,
                Name               = modelOld.Name,
                Email              = modelOld.Email,
                Address            = modelOld.Address,
                CityId             = modelOld.CityId,
                WorkEnds           = modelOld.WorkEnds,
                WorkStarts         = modelOld.WorkStarts,
                Description        = modelOld.Description,
                SportId            = modelOld.SportId,
                Phone              = modelOld.Phone,
                PriceForHour       = modelOld.PriceForHour,
                IsPayed            = modelOld.IsPayed,
                ExistingImage1Path = modelOld.Image1Path,
                ExistingImage2Path = modelOld.Image2Path,
                Cities             = sportObjectRepository.GetAllCities(),
                Sports             = sportObjectRepository.GetAllSports()
            };

            return(View(sportObjectEditViewModel));
        }
 public SportObject Add(SportObject sportObject)
 {
     context.SportObjects.Add(sportObject);
     context.SaveChanges();
     return(sportObject);
 }
示例#26
0
        public static void EnsurePopulated(IApplicationBuilder app)
        {
            {
                ApplicationDbContext context = app.ApplicationServices
                                               .GetRequiredService <ApplicationDbContext>();


                if (context.Sports.Any())
                {
                    return;
                }

                var sports = new Sport[]
                {
                    new Sport
                    {
                        Name = "Voetbal"
                    },
                    new Sport
                    {
                        Name = "Basketbal"
                    },
                    new Sport
                    {
                        Name = "Trefbal"
                    },
                    new Sport
                    {
                        Name = "Hockey"
                    },
                    new Sport
                    {
                        Name = "Fitness"
                    },
                    new Sport
                    {
                        Name = "Volleyball"
                    },
                    new Sport
                    {
                        Name = "Badminton"
                    }
                };

                foreach (Sport s in sports)
                {
                    context.Sports.Add(s);
                }

                context.SaveChanges();

                var buildings = new Building[]
                {
                    new Building
                    {
                        Name = "Fitness Group"
                    },
                    new Building
                    {
                        Name = "Sport For Free"
                    },
                    new Building
                    {
                        Name = "Sport Fit"
                    }
                };


                foreach (Building b in buildings)
                {
                    context.Buildings.Add(b);
                }

                context.SaveChanges();

                var addresses = new Address[]
                {
                    new Address
                    {
                        City        = "Breda",
                        HouseNumber = 51,
                        ZipCode     = "4815AA",
                        StreetName  = "Sportstraat",
                        Country     = "Nederland",
                        State       = "Noord-Brabant",
                        BuildingId  = buildings.Single(b => b.Name == "Fitness Group").BuildingId
                    },
                    new Address
                    {
                        City        = "Breda",
                        HouseNumber = 101,
                        ZipCode     = "4819BB",
                        StreetName  = "Van Voorstelstraat",
                        Country     = "Nederland",
                        State       = "Noord-Brabant",
                        BuildingId  = buildings.Single(b => b.Name == "Sport For Free").BuildingId
                    },
                    new Address
                    {
                        City        = "Breda",
                        HouseNumber = 33,
                        ZipCode     = "4814CC",
                        StreetName  = "Dijkweg",
                        Country     = "Nederland",
                        State       = "Noord-Brabant",
                        BuildingId  = buildings.Single(b => b.Name == "Sport Fit").BuildingId
                    }
                };

                foreach (Address a in addresses)
                {
                    context.Addresses.Add(a);
                }

                context.SaveChanges();


                var halls = new Hall[]
                {
                    new Hall
                    {
                        Name       = "Hall 1",
                        Price      = 10,
                        Size       = "Groot",
                        BuildingId = buildings.Single(b => b.Name == "Sport Fit").BuildingId,
                        Available  = true
                    },
                    new Hall
                    {
                        Name       = "Hall 2",
                        Price      = 20,
                        Size       = "Klein",
                        BuildingId = buildings.Single(b => b.Name == "Fitness Group").BuildingId,
                        Available  = false
                    },
                    new Hall
                    {
                        Name       = "Hall 3",
                        Price      = 50,
                        Size       = "Klein",
                        BuildingId = buildings.Single(b => b.Name == "Sport Fit").BuildingId,
                        Available  = true
                    },
                    new Hall
                    {
                        Name       = "Hall 4",
                        Price      = 40,
                        Size       = "Groot",
                        BuildingId = buildings.Single(b => b.Name == "Sport For Free").BuildingId,
                        Available  = false
                    },
                    new Hall
                    {
                        Name       = "Hall 5",
                        Price      = 100,
                        Size       = "Middel",
                        BuildingId = buildings.Single(b => b.Name == "Sport Fit").BuildingId,
                        Available  = true
                    },
                    new Hall
                    {
                        Name       = "Hall 6",
                        Price      = 40,
                        Size       = "Middel",
                        BuildingId = buildings.Single(b => b.Name == "Fitness Group").BuildingId,
                        Available  = true
                    }
                };

                foreach (var h in halls)
                {
                    context.Halls.Add(h);
                }

                context.SaveChanges();

                var sportHalls = new SportHall[]
                {
                    new SportHall
                    {
                        SportId = sports.Single(s => s.Name == "Voetbal").SportId,
                        HallId  = halls.Single(h => h.Name == "Hall 1").HallId
                    },

                    new SportHall
                    {
                        SportId = sports.Single(s => s.Name == "Basketbal").SportId,
                        HallId  = halls.Single(h => h.Name == "Hall 2").HallId
                    },

                    new SportHall
                    {
                        SportId = sports.Single(s => s.Name == "Volleyball").SportId,
                        HallId  = halls.Single(h => h.Name == "Hall 4").HallId
                    },
                    new SportHall
                    {
                        SportId = sports.Single(s => s.Name == "Hockey").SportId,
                        HallId  = halls.Single(h => h.Name == "Hall 5").HallId
                    },
                    new SportHall
                    {
                        SportId = sports.Single(s => s.Name == "Volleyball").SportId,
                        HallId  = halls.Single(h => h.Name == "Hall 6").HallId
                    }
                };

                foreach (var h in sportHalls)
                {
                    context.SportHalls.Add(h);
                }

                context.SaveChanges();

                var openingHours = new OpeningHours[]
                {
                    new OpeningHours
                    {
                        Day         = "Maandag",
                        ClosingTime = "18",
                        OpeningTime = "10"
                    },
                    new OpeningHours
                    {
                        Day         = "Dinsdag",
                        ClosingTime = "18",
                        OpeningTime = "8"
                    },
                    new OpeningHours
                    {
                        Day         = "Woensdag",
                        ClosingTime = "20",
                        OpeningTime = "8"
                    },
                    new OpeningHours
                    {
                        Day         = "Donderdag",
                        ClosingTime = "22",
                        OpeningTime = "10"
                    },
                    new OpeningHours
                    {
                        Day         = "Vrijdag",
                        ClosingTime = "22",
                        OpeningTime = "10"
                    },
                    new OpeningHours
                    {
                        Day         = "Zaterdag",
                        ClosingTime = "20",
                        OpeningTime = "11"
                    },
                    new OpeningHours
                    {
                        Day         = "Zondag",
                        ClosingTime = "18",
                        OpeningTime = "12"
                    },
                    new OpeningHours
                    {
                        Day         = "Maandag2",
                        ClosingTime = "16",
                        OpeningTime = "8"
                    },
                    new OpeningHours
                    {
                        Day         = "Maandag3",
                        ClosingTime = "16",
                        OpeningTime = "9"
                    }
                };

                foreach (var openingHour in openingHours)
                {
                    context.OpeningHours.Add(openingHour);
                }

                context.SaveChanges();



                var hallOpeningHours = new HallOpeningHours[]
                {
                    new HallOpeningHours
                    {
                        HallId         = halls.Single(h => h.Name == "Hall 1").HallId,
                        OpeningHoursId = openingHours.Single(o => o.Day == "Maandag").OpeningHoursId
                    },
                    new HallOpeningHours
                    {
                        HallId         = halls.Single(h => h.Name == "Hall 1").HallId,
                        OpeningHoursId = openingHours.Single(o => o.Day == "Dinsdag").OpeningHoursId
                    },
                    new HallOpeningHours
                    {
                        HallId         = halls.Single(h => h.Name == "Hall 1").HallId,
                        OpeningHoursId = openingHours.Single(o => o.Day == "Woensdag").OpeningHoursId
                    },
                    new HallOpeningHours
                    {
                        HallId         = halls.Single(h => h.Name == "Hall 1").HallId,
                        OpeningHoursId = openingHours.Single(o => o.Day == "Donderdag").OpeningHoursId
                    },
                    new HallOpeningHours
                    {
                        HallId         = halls.Single(h => h.Name == "Hall 1").HallId,
                        OpeningHoursId = openingHours.Single(o => o.Day == "Vrijdag").OpeningHoursId
                    },
                    new HallOpeningHours
                    {
                        HallId         = halls.Single(h => h.Name == "Hall 1").HallId,
                        OpeningHoursId = openingHours.Single(o => o.Day == "Zaterdag").OpeningHoursId
                    },
                    new HallOpeningHours
                    {
                        HallId         = halls.Single(h => h.Name == "Hall 1").HallId,
                        OpeningHoursId = openingHours.Single(o => o.Day == "Zondag").OpeningHoursId
                    }

                    //TODO add some more openinghours foreach hall
                };

                foreach (HallOpeningHours h in hallOpeningHours)
                {
                    context.HallOpeningHours.Add(h);
                }

                context.SaveChanges();


                var sportObjects = new SportObject[]
                {
                    new SportObject {
                        Name = "Voetbal"
                    },
                    new SportObject {
                        Name = "Volleybal"
                    },
                    new SportObject {
                        Name = "Hockeystick"
                    },
                    new SportObject {
                        Name = "Basketbal"
                    },
                    new SportObject {
                        Name = "Goal"
                    },
                    new SportObject {
                        Name = "Springtouw"
                    },
                    new SportObject {
                        Name = "Zachte bal"
                    },
                    new SportObject {
                        Name = "Badminton racket"
                    },
                    new SportObject {
                        Name = "Badminton net"
                    },
                    new SportObject {
                        Name = "Bench press"
                    },
                    new SportObject {
                        Name = "Gewichten"
                    },
                    new SportObject {
                        Name = "Mat"
                    },
                    new SportObject {
                        Name = "Volleybal net"
                    },
                    new SportObject {
                        Name = "Basketbal net"
                    }

                    //TODO new sports, new items
                };

                foreach (SportObject so in sportObjects)
                {
                    context.SportObjects.Add(so);
                }

                context.SaveChanges();

                var sportObjectSport = new SportObjectSport[]
                {
                    new SportObjectSport
                    {
                        SportId       = sports.Single(s => s.Name == "Voetbal").SportId,
                        SportObjectId = sportObjects.Single(so => so.Name == "Voetbal").SportObjectId
                    },
                    new SportObjectSport
                    {
                        SportObjectId = sportObjects.Single(so => so.Name == "Mat").SportObjectId,
                        SportId       = sports.Single(s => s.Name == "Fitness").SportId
                    },
                    new SportObjectSport
                    {
                        SportObjectId = sportObjects.Single(so => so.Name == "Gewichten").SportObjectId,
                        SportId       = sports.Single(s => s.Name == "Fitness").SportId
                    },
                    new SportObjectSport
                    {
                        SportObjectId = sportObjects.Single(so => so.Name == "Bench press").SportObjectId,
                        SportId       = sports.Single(s => s.Name == "Fitness").SportId
                    },
                    new SportObjectSport
                    {
                        SportObjectId = sportObjects.Single(so => so.Name == "Badminton net").SportObjectId,
                        SportId       = sports.Single(s => s.Name == "Badminton").SportId
                    },
                    new SportObjectSport
                    {
                        SportObjectId = sportObjects.Single(so => so.Name == "Badminton racket").SportObjectId,
                        SportId       = sports.Single(s => s.Name == "Badminton").SportId
                    },
                    new SportObjectSport
                    {
                        SportObjectId = sportObjects.Single(so => so.Name == "Zachte bal").SportObjectId,
                        SportId       = sports.Single(s => s.Name == "Trefbal").SportId
                    },
                    new SportObjectSport
                    {
                        SportObjectId = sportObjects.Single(so => so.Name == "Springtouw").SportObjectId,
                        SportId       = sports.Single(s => s.Name == "Fitness").SportId
                    },
                    new SportObjectSport
                    {
                        SportObjectId = sportObjects.Single(so => so.Name == "Goal").SportObjectId,
                        SportId       = sports.Single(s => s.Name == "Voetbal").SportId
                    },
                    new SportObjectSport
                    {
                        SportObjectId = sportObjects.Single(so => so.Name == "Basketbal").SportObjectId,
                        SportId       = sports.Single(s => s.Name == "Basketbal").SportId
                    },
                    new SportObjectSport
                    {
                        SportObjectId = sportObjects.Single(so => so.Name == "Hockeystick").SportObjectId,
                        SportId       = sports.Single(s => s.Name == "Hockey").SportId
                    },
                    new SportObjectSport
                    {
                        SportObjectId = sportObjects.Single(so => so.Name == "Goal").SportObjectId,
                        SportId       = sports.Single(s => s.Name == "Hockey").SportId
                    },
                    new SportObjectSport
                    {
                        SportObjectId = sportObjects.Single(so => so.Name == "Volleybal").SportObjectId,
                        SportId       = sports.Single(s => s.Name == "Volleyball").SportId
                    },
                    new SportObjectSport
                    {
                        SportObjectId = sportObjects.Single(so => so.Name == "Basketbal net").SportObjectId,
                        SportId       = sports.Single(s => s.Name == "Basketbal").SportId
                    },
                    new SportObjectSport
                    {
                        SportObjectId = sportObjects.Single(so => so.Name == "Volleybal net").SportObjectId,
                        SportId       = sports.Single(s => s.Name == "Volleyball").SportId
                    }
                };

                foreach (SportObjectSport sop in sportObjectSport)
                {
                    context.SportObjectSports.Add(sop);
                }

                context.SaveChanges();



                var sportObjectHall = new SportObjectHall[]
                {
                    new SportObjectHall
                    {
                        HallId        = halls.Single(s => s.Name == "Hall 1").HallId,
                        SportObjectId = sportObjects.Single(so => so.Name == "Voetbal").SportObjectId
                    },
                    new SportObjectHall
                    {
                        SportObjectId = sportObjects.Single(so => so.Name == "Mat").SportObjectId,
                        HallId        = halls.Single(s => s.Name == "Hall 3").HallId
                    },
                    new SportObjectHall
                    {
                        SportObjectId = sportObjects.Single(so => so.Name == "Gewichten").SportObjectId,
                        HallId        = halls.Single(s => s.Name == "Hall 3").HallId
                    },
                    new SportObjectHall
                    {
                        SportObjectId = sportObjects.Single(so => so.Name == "Bench press").SportObjectId,
                        HallId        = halls.Single(s => s.Name == "Hall 3").HallId
                    },
                    new SportObjectHall
                    {
                        SportObjectId = sportObjects.Single(so => so.Name == "Badminton net").SportObjectId,
                        HallId        = halls.Single(s => s.Name == "Hall 6").HallId
                    },
                    new SportObjectHall
                    {
                        SportObjectId = sportObjects.Single(so => so.Name == "Badminton racket").SportObjectId,
                        HallId        = halls.Single(s => s.Name == "Hall 6").HallId
                    },
                    new SportObjectHall
                    {
                        SportObjectId = sportObjects.Single(so => so.Name == "Zachte bal").SportObjectId,
                        HallId        = halls.Single(s => s.Name == "Hall 1").HallId
                    },
                    new SportObjectHall
                    {
                        SportObjectId = sportObjects.Single(so => so.Name == "Springtouw").SportObjectId,
                        HallId        = halls.Single(s => s.Name == "Hall 3").HallId
                    },
                    new SportObjectHall
                    {
                        SportObjectId = sportObjects.Single(so => so.Name == "Goal").SportObjectId,
                        HallId        = halls.Single(s => s.Name == "Hall 1").HallId
                    },
                    new SportObjectHall
                    {
                        SportObjectId = sportObjects.Single(so => so.Name == "Basketbal").SportObjectId,
                        HallId        = halls.Single(s => s.Name == "Hall 2").HallId
                    },
                    new SportObjectHall
                    {
                        SportObjectId = sportObjects.Single(so => so.Name == "Hockeystick").SportObjectId,
                        HallId        = halls.Single(s => s.Name == "Hall 5").HallId
                    },
                    new SportObjectHall
                    {
                        SportObjectId = sportObjects.Single(so => so.Name == "Goal").SportObjectId,
                        HallId        = halls.Single(s => s.Name == "Hall 5").HallId
                    },
                    new SportObjectHall
                    {
                        SportObjectId = sportObjects.Single(so => so.Name == "Volleybal").SportObjectId,
                        HallId        = halls.Single(s => s.Name == "Hall 4").HallId
                    },
                    new SportObjectHall
                    {
                        SportObjectId = sportObjects.Single(so => so.Name == "Basketbal net").SportObjectId,
                        HallId        = halls.Single(s => s.Name == "Hall 2").HallId
                    },
                    new SportObjectHall
                    {
                        SportObjectId = sportObjects.Single(so => so.Name == "Volleybal net").SportObjectId,
                        HallId        = halls.Single(s => s.Name == "Hall 4").HallId
                    },
                    new SportObjectHall
                    {
                        SportObjectId = sportObjects.Single(so => so.Name == "Volleybal net").SportObjectId,
                        HallId        = halls.Single(s => s.Name == "Hall 6").HallId
                    },
                    new SportObjectHall
                    {
                        SportObjectId = sportObjects.Single(so => so.Name == "Volleybal").SportObjectId,
                        HallId        = halls.Single(s => s.Name == "Hall 6").HallId
                    }
                };

                foreach (SportObjectHall soh in sportObjectHall)
                {
                    context.SportObjectHalls.Add(soh);
                }

                context.SaveChanges();
            }
        }
        public List <TermByDateDto> GetAllTerms(SportObject sportObject)
        {
            var workingHours = sportObject.WorkingHours.ToList();

            if (!workingHours.Any())
            {
                throw new Exception("Sport object doesn't have working hours");
            }

            var maxTimeWorkingHour = sportObject.WorkingHours.Min(wh => wh.CloseTime);

            if (maxTimeWorkingHour.Hours != 0)
            {
                maxTimeWorkingHour = sportObject.WorkingHours.Max(wh => wh.CloseTime);
            }

            var prices = sportObject.Prices.ToList();

            if (!prices.Any())
            {
                throw new Exception("Sport object doesn't have prices");
            }

            var futureDays   = 7;
            var reservations = sportObject.Reservations
                               .Where(r => r.Date >= DateTime.Today && r.Date <= DateTime.Today.AddDays(futureDays))
                               .ToList();

            var termsByDate = new List <TermByDateDto>();

            for (int i = 0; i <= futureDays; i++)
            {
                var date           = DateTime.Today.AddDays(i);
                var day            = (int)date.DayOfWeek == 0 ? 7 : (int)date.DayOfWeek;
                var wh             = workingHours.Find(w => w.Day == day);
                var openTimeHours  = wh.OpenTime.Hours;
                var closeTimeHours = wh.CloseTime.Hours;

                if (closeTimeHours == 0)
                {
                    closeTimeHours = 24;
                }

                var termByDate = new TermByDateDto();
                termByDate.Date = date;

                for (int j = openTimeHours; j < closeTimeHours; j++)
                {
                    var startTime = new TimeSpan(j, 0, 0);
                    var endTime   = startTime.Add(TimeSpan.FromHours(1));

                    if (startTime.Hours == 23)
                    {
                        endTime = new TimeSpan(0, 0, 0);
                    }

                    var price = sportObject.Prices.SingleOrDefault(p => startTime >= p.TimeFrom && startTime < p.TimeTo && p.TimeTo != maxTimeWorkingHour);

                    if (price == null)
                    {
                        price = sportObject.Prices.SingleOrDefault(p => p.TimeTo == maxTimeWorkingHour);
                    }


                    var term = new TermDto
                    {
                        StartTime = startTime,
                        Price     = price.PricePerHour,
                        Status    = "free",
                        IsExpired = false
                    };

                    termByDate.Terms.Add(term);
                }

                termsByDate.Add(termByDate);
            }


            foreach (var res in reservations)
            {
                foreach (var termByDate in termsByDate)
                {
                    foreach (var term in termByDate.Terms)
                    {
                        if (termByDate.Date == res.Date && term.StartTime == res.StartTime)
                        {
                            term.Status = res.Status.Status;
                        }

                        if (termByDate.Date == DateTime.Today && term.StartTime < DateTime.Now.TimeOfDay)
                        {
                            term.Status = Status.Accepted;
                        }
                    }
                }
            }

            return(termsByDate);
        }
示例#28
0
 public void DeleteSportObject(SportObject sportObject)
 {
     _sportContext.Remove(sportObject);
     _sportContext.SaveChanges();
 }