예제 #1
0
        public TMEventDto GetTMEvent(int id)
        {
            TMEvent tmevent = _tmeventRepository.GetById(id);

            return(ConvertToDto(tmevent, GetTMEventAreaByEvent(id),
                                GetTMEventSeatByEvent(id)));
        }
예제 #2
0
        public int RemoveTMEvent(int id)
        {
            if (GetTMEventSeatByEvent(id).Where(s => s.State == SeatState.Busy).ToList().Count == 0)
            {
                _tmeventRepository.Remove(id);

                TMEvent obj = _tmeventRepository.GetById(id);

                return(obj == null ? 1 : 0);
            }

            return(0);
        }
예제 #3
0
        public TMEventStatus CreateTMEvent(TMEventDto obj)
        {
            TMEvent obje = ConvertToEntity(obj);

            TMEventStatus result = IsValid(obje);

            if (result == TMEventStatus.Success)
            {
                obje = _tmeventRepository.Create(obje);

                obj.Id = obje.Id;
            }

            return(result);
        }
예제 #4
0
        private TMEventStatus IsValid(TMEvent obj)
        {
            if (obj.StartEvent < DateTime.Now.Date)
            {
                return(TMEventStatus.DateInPast);
            }

            if (obj.EndEvent < obj.StartEvent)
            {
                return(TMEventStatus.DateWrongOrder);
            }

            if (_tmeventRepository.GetAll().Where(item => item.TMLayoutId == obj.TMLayoutId &&
                                                  obj.StartEvent >= item.StartEvent &&
                                                  obj.StartEvent <= item.EndEvent).Where(e => e.Id != obj.Id).ToList().Count > 0)
            {
                return(TMEventStatus.SameByDateObj);
            }

            return(TMEventStatus.Success);
        }
예제 #5
0
        private static TMEventDto ConvertToDto(TMEvent obj,
                                               List <TMEventAreaDto> areas, List <TMEventSeatDto> seats)
        {
            if (obj == null)
            {
                return(null);
            }

            return(new TMEventDto
            {
                Id = obj.Id,
                Description = obj.Description,
                EndEvent = obj.EndEvent,
                Img = obj.Img,
                Name = obj.Name,
                StartEvent = obj.StartEvent,
                TMLayoutId = obj.TMLayoutId,
                AllSeats = seats.Count,
                BusySeats = seats.Where(s => s.State == SeatState.Busy).ToList().Count,
                MiddlePriceBySeat = areas.Count > 0 ? areas.Sum(a => a.Price) / areas.Count : 0,
            });
        }
예제 #6
0
        public TMEventStatus UpdateTMEvent(TMEventDto obj)
        {
            TMEvent obje = ConvertToEntity(obj);

            TMEventStatus result = IsValid(obje);

            // check on busy seats
            TMEventDto current = GetTMEvent(obj.Id);

            if (current.TMLayoutId != obj.TMLayoutId &&
                GetTMEventSeatByEvent(obj.Id).Where(s => s.State == SeatState.Busy).ToList().Count > 0)
            {
                result = TMEventStatus.BusySeatsExists;
            }

            if (result == TMEventStatus.Success)
            {
                _tmeventRepository.Update(obje);
            }

            return(result);
        }
예제 #7
0
        public void CreateEventTest()
        {
            // arange
            var venueRepository  = new VenueRepositoryEF(_context);
            var layoutRepository = new TMLayoutRepositoryEF(_context);
            var areaRepository   = new AreaRepositoryEF(_context);
            var seatRepository   = new SeatRepositoryEF(_context);

            var eventRepository     = new TMEventRepositoryEF(_context);
            var eventAreaRepository = new TMEventAreaRepositoryEF(_context);
            var eventSeatRepository = new TMEventSeatRepositoryEF(_context);

            Venue venue = venueRepository.Create(
                new Venue {
                Description = "some v desc2", Address = "some address2", Lenght = 5, Weidth = 5
            });

            TMLayout layout = layoutRepository.Create(new TMLayout {
                Description = "some desc2", VenueId = venue.Id
            });

            List <Area> areas = new List <Area>();

            areas.Add(areaRepository.Create(
                          new Area {
                Description = "area12", CoordX = 0, CoordY = 0, TMLayoutId = layout.Id
            }));
            areas.Add(areaRepository.Create(
                          new Area {
                Description = "area22", CoordX = 0, CoordY = 1, TMLayoutId = layout.Id
            }));

            List <Seat> seats = new List <Seat>();

            for (int i = 1; i < venue.Lenght + 1; i++)
            {
                areas.ForEach(a => seats.Add(seatRepository.Create(new Seat {
                    Number = i, Row = 1, AreaId = a.Id
                })));
            }

            // act
            TMEvent tmevent = eventRepository.Create(
                new TMEvent
            {
                Name        = "big event22",
                Description = "some event desc22",
                TMLayoutId  = layout.Id,
                StartEvent  = DateTime.Now.Date.AddDays(3),
                EndEvent    = DateTime.Now.Date.AddDays(4),
            });

            List <TMEventArea> tmeventareas = eventAreaRepository.GetAll().Where(a => a.TMEventId == tmevent.Id).ToList();
            List <TMEventSeat> tmeventseats = eventSeatRepository.GetAll().
                                              Where(s => tmeventareas.Any(a => a.Id == s.TMEventAreaId)).ToList();
            TMEvent tmeventFromDB = eventRepository.GetById(tmevent.Id);

            eventRepository.Remove(tmevent.Id);

            // delete tested data
            seats.ForEach(s => seatRepository.Remove(s.Id));
            areas.ForEach(a => areaRepository.Remove(a.Id));

            layoutRepository.Remove(layout.Id);
            venueRepository.Remove(venue.Id);

            // assert
            tmevent.Should().BeEquivalentTo(tmeventFromDB);

            areas.ToList().Count.Should().Be(tmeventareas.Count);
            tmeventareas.ForEach(ta => ta.Id = 0);
            areas.ForEach(ta => ta.Id        = 0);
            tmeventareas.Should().BeEquivalentTo(areas, options => options.ExcludingMissingMembers());

            seats.Count.Should().Be(tmeventseats.Count);
            tmeventseats.ForEach(ta => ta.Id = 0);
            seats.ForEach(ta => ta.Id        = 0);
            tmeventseats.Should().BeEquivalentTo(seats, options => options.ExcludingMissingMembers());
        }
예제 #8
0
        public void UpdateEventLocalFieldsTest()
        {
            // arange
            var venueRepository  = new VenueRepositoryEF(_context);
            var layoutRepository = new TMLayoutRepositoryEF(_context);
            var areaRepository   = new AreaRepositoryEF(_context);
            var seatRepository   = new SeatRepositoryEF(_context);

            var eventRepository = new TMEventRepositoryEF(_context);

            Venue venue = venueRepository.Create(
                new Venue {
                Description = "some v desc2", Address = "some address2", Lenght = 5, Weidth = 5
            });

            TMLayout layout = layoutRepository.Create(new TMLayout {
                Description = "some desc2", VenueId = venue.Id
            });

            List <Area> areas = new List <Area>();

            areas.Add(areaRepository.Create(
                          new Area {
                Description = "area12", CoordX = 0, CoordY = 0, TMLayoutId = layout.Id
            }));
            areas.Add(areaRepository.Create(
                          new Area {
                Description = "area22", CoordX = 0, CoordY = 1, TMLayoutId = layout.Id
            }));

            List <Seat> seats = new List <Seat>();

            for (int i = 1; i < venue.Lenght + 1; i++)
            {
                areas.ForEach(a => seats.Add(seatRepository.Create(new Seat {
                    Number = i, Row = 1, AreaId = a.Id
                })));
            }

            TMEvent tmevent = eventRepository.Create(
                new TMEvent
            {
                Name        = "big event22",
                Description = "some event desc22",
                TMLayoutId  = layout.Id,
                StartEvent  = DateTime.Now.Date.AddDays(3),
                EndEvent    = DateTime.Now.Date.AddDays(4),
            });

            // was some second create
            // act
            tmevent.Description = "new desc";
            tmevent.StartEvent  = DateTime.Now.Date.AddDays(5);
            tmevent.EndEvent    = DateTime.Now.Date.AddDays(6);

            eventRepository.Update(tmevent);

            TMEvent tmeventFromDB = eventRepository.GetById(tmevent.Id);

            // delete tested data
            seats.ForEach(s => seatRepository.Remove(s.Id));
            areas.ForEach(a => areaRepository.Remove(a.Id));

            eventRepository.Remove(tmevent.Id);
            layoutRepository.Remove(layout.Id);
            venueRepository.Remove(venue.Id);

            // assert
            tmevent.Should().BeEquivalentTo(tmeventFromDB);
        }