public void Execute(int request)
        {
            var reservation = _context.Reservations.Find(request);

            if (reservation == null)
            {
                throw new NotFoundException(request, typeof(ReservationDto));
            }

            using (var transaction = _context.Database.BeginTransaction())
            {
                try
                {
                    var seatsRes = _context.Reservations.Include(s => s.SeatReserveds).Where(s => s.Id == reservation.Id).First().SeatReserveds;

                    foreach (var item in seatsRes)
                    {
                        _context.SeatReserved.Remove(item);
                    }

                    _context.SaveChanges();

                    _context.Reservations.Remove(reservation);

                    _context.SaveChanges();

                    transaction.Commit();
                }
                catch (Exception)
                {
                    transaction.Rollback();
                }
            }
        }
        public void Execute(AuditoriumDto request)
        {
            _validator.ValidateAndThrow(request);

            var auditorium = new Auditorium
            {
                Name = request.Name
            };

            _context.Auditoriums.Add(auditorium);
            _context.SaveChanges();

            int lastAuditoriumId = _context.Auditoriums.Max(item => item.Id);

            for (var i = 1; i <= 10; i++)
            {
                var seat = new Seat
                {
                    Number       = i,
                    AuditoriumId = lastAuditoriumId
                };

                _context.Seats.Add(seat);
            }

            _context.SaveChanges();
        }
Beispiel #3
0
        public void Execute(int request)
        {
            var user = _context.Users.Find(request);

            if (user == null)
            {
                throw new NotFoundException(user.Id, typeof(UserDto));
            }

            using (var transaction = _context.Database.BeginTransaction())
            {
                try
                {
                    var userReservations = _context.Users.Include(r => r.Reservations).Where(r => r.Id == user.Id).First().Reservations;

                    if (userReservations.Any())
                    {
                        foreach (var item in userReservations)
                        {
                            var seatRes = _context.Reservations.Include(r => r.SeatReserveds).Where(r => r.Id == item.Id).First().SeatReserveds;

                            foreach (var res  in seatRes)
                            {
                                _context.SeatReserved.Remove(res);
                            }

                            _context.Reservations.Remove(item);
                        }

                        _context.SaveChanges();
                    }



                    var logs = _context.AuditLogger.Where(a => a.Actor == user.Username);

                    if (logs.Any())
                    {
                        foreach (var item in logs)
                        {
                            _context.AuditLogger.Remove(item);
                        }

                        _context.SaveChanges();
                    }

                    _context.Users.Remove(user);

                    _context.SaveChanges();

                    transaction.Commit();
                }
                catch (Exception ex)
                {
                    Console.Write(ex);
                    transaction.Rollback();
                }
            }
        }
Beispiel #4
0
        public void Execute(int request)
        {
            var movie = _context.Movies.Find(request);

            if (movie == null)
            {
                new NotFoundException(request, typeof(Movie));
            }

            using (var transaction = _context.Database.BeginTransaction())
            {
                try
                {
                    //Proveriti kasnije da li radi soft delete iz SeatReserveds tabele
                    var movieScreening = _context.Screenings.Where(s => s.MovieId == movie.Id);

                    if (movieScreening != null)
                    {
                        foreach (var time in movieScreening)
                        {
                            time.SeatReserveds.Select(s => new SeatReserved
                            {
                                IsActive  = false,
                                IsDeleted = true,
                                DeletedAt = DateTime.Now
                            });
                        }
                        _context.SaveChanges();
                    }



                    var screening = _context.Screenings.Where(s => s.MovieId == movie.Id).Select(s => new Screening {
                        IsActive  = false,
                        IsDeleted = true,
                        DeletedAt = DateTime.Now
                    });

                    if (screening != null)
                    {
                        _context.SaveChanges();
                    }

                    movie.IsActive  = false;
                    movie.IsDeleted = true;
                    movie.DeletedAt = DateTime.Now;

                    _context.SaveChanges();

                    transaction.Commit();
                }
                catch (Exception)
                {
                    transaction.Rollback();
                }
            }
        }
        public void Execute(ReservationDto request)
        {
            using (var transaction = _context.Database.BeginTransaction())
            {
                try
                {
                    var reservation = new Reservation
                    {
                        UserId      = request.UserId,
                        ScreeningId = request.ScreeningId
                    };

                    _context.Reservations.Add(reservation);
                    _context.SaveChanges();

                    int lastReservationId = _context.Reservations.Max(item => item.Id);


                    var randomSeatId = _context.Seats.FromSqlRaw($"select top 1 s.* from Seats s where s.AuditoriumId = {request.AuditoriumId} and s.Id not in(select s.Id from Seats s inner join SeatReserved r on s.Id = r.SeatId where r.ScreeningId = {request.ScreeningId} and s.AuditoriumId = {request.AuditoriumId} ) order by newid()").First().Id;


                    var seatReserved = new SeatReserved
                    {
                        ReservationId = lastReservationId,
                        ScreeningId   = request.ScreeningId,
                        SeatId        = randomSeatId
                    };

                    _context.SeatReserved.Add(seatReserved);
                    _context.SaveChanges();


                    var userEmail = _context.Users.Where(s => s.Id == request.UserId).First().Email;

                    _email.Send(new EmailDto
                    {
                        EmailTo = userEmail,
                        Subject = "Movie Plus Reservation",
                        Content = "<h1>Ticket successfully reserved</h1> "
                    });


                    transaction.Commit();
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                    transaction.Rollback();
                }
            }
        }
Beispiel #6
0
        public void Execute(int request)
        {
            var screening = _context.Screenings.Find(request);

            if (screening == null)
            {
                new NotFoundException(request, typeof(Screening));
            }

            using (var transaction = _context.Database.BeginTransaction())
            {
                try
                {
                    var reservations = _context.Screenings.Include(r => r.Reservations).Where(s => s.Id == screening.Id).First().Reservations;

                    if (reservations.Any())
                    {
                        foreach (var item in reservations)
                        {
                            _context.Reservations.Remove(item);
                        }
                    }

                    _context.SaveChanges();

                    var screeningSeats = _context.Screenings.Include(r => r.SeatReserveds).Where(s => s.Id == screening.Id).First().SeatReserveds;

                    if (screeningSeats.Any())
                    {
                        foreach (var item in screeningSeats)
                        {
                            _context.SeatReserved.Remove(item);
                        }
                    }

                    _context.SaveChanges();


                    _context.Screenings.Remove(screening);
                    _context.SaveChanges();

                    transaction.Commit();
                }
                catch (Exception)
                {
                    transaction.Rollback();
                }
            }
        }
        public void Execute(ScreeningDto request)
        {
            var splitDate = request.Date.Split('-');

            var searchDate = new DateTime(int.Parse(splitDate[0]), int.Parse(splitDate[1]), int.Parse(splitDate[2]), int.Parse(request.Time), 0, 0);

            var modifiedRequest = new ScreeningDto
            {
                MovieId       = request.MovieId,
                AuditoriumId  = request.AuditoriumId,
                ScreeningTime = searchDate
            };

            _validator.ValidateAndThrow(modifiedRequest);

            var screening = new Screening
            {
                MovieId       = request.MovieId,
                AuditoriumId  = request.AuditoriumId,
                ScreeningTime = searchDate
            };

            _context.Screenings.Add(screening);

            _context.SaveChanges();
        }
        public void Execute(ScreeningDto request)
        {
            var screening = _context.Screenings.Find(request.Id);

            if (screening == null)
            {
                throw new NotFoundException(request.Id, typeof(ScreeningDto));
            }


            var splitDate = request.Date.Split('-');

            var searchDate = new DateTime(int.Parse(splitDate[0]), int.Parse(splitDate[1]), int.Parse(splitDate[2]), int.Parse(request.Time), 0, 0);


            var modifiedRequest = new ScreeningDto
            {
                MovieId       = request.MovieId,
                AuditoriumId  = request.AuditoriumId,
                ScreeningTime = searchDate
            };

            _validator.ValidateAndThrow(modifiedRequest);


            screening.MovieId       = request.MovieId;
            screening.AuditoriumId  = request.AuditoriumId;
            screening.ScreeningTime = searchDate;

            _context.SaveChanges();
        }
Beispiel #9
0
        public void Execute(SeatInsertDto request)
        {
            _validator.ValidateAndThrow(request);

            var seat = new Seat
            {
                Number       = request.Number,
                AuditoriumId = _context.Auditoriums.Where(a => a.Name == request.AuditoriumName).First().Id
            };

            _context.Seats.Add(seat);
            _context.SaveChanges();
        }
        public void Log(IUseCase useCase, IApplicationUser actor, object useCaseData)
        {
            var userLog = new AuditLogger
            {
                UseCaseName = useCase.Name,
                Data        = JsonConvert.SerializeObject(useCaseData),
                Actor       = actor.Identity,
                Time        = DateTime.UtcNow
            };

            _context.Add(userLog);

            _context.SaveChanges();
        }
Beispiel #11
0
        public void Execute(MovieDto request)
        {
            _validator.ValidateAndThrow(request);

            var movie = new Movie
            {
                Title       = request.Title,
                Description = request.Description,
                Duration    = request.Duration,
                Image       = request.Image
            };

            _context.Movies.Add(movie);
            _context.SaveChanges();
        }
Beispiel #12
0
        public void Execute(int request)
        {
            var seat = _context.Seats.Find(request);

            if (seat == null)
            {
                throw new NotFoundException(request, typeof(Seat));
            }

            seat.DeletedAt = DateTime.Now;
            seat.IsDeleted = true;
            seat.IsActive  = false;

            _context.SaveChanges();
        }
Beispiel #13
0
        public void Execute(SeatUpdateDto request)
        {
            var seat = _context.Seats.Find(request.Id);

            if (seat == null)
            {
                throw new NotFoundException(request.Id, typeof(Seat));
            }

            _validator.ValidateAndThrow(request);

            seat.Number       = request.Number;
            seat.AuditoriumId = _context.Auditoriums.Where(a => a.Name == request.AuditoriumName).First().Id;

            _context.SaveChanges();
        }
        public void Execute(AuditoriumUpdateDto request)
        {
            var auditorium = _context.Auditoriums.Find(request.Id);

            if (auditorium == null)
            {
                throw new NotFoundException(request.Id, typeof(Auditorium));
            }

            _validator.ValidateAndThrow(request);

            auditorium.Name      = request.Name;
            auditorium.UpdatedAt = DateTime.Now;

            _context.SaveChanges();
        }
Beispiel #15
0
        public void Execute(int request)
        {
            var query = _context.Auditoriums.Include(s => s.Seats).AsQueryable();

            var auditorium = query.FirstOrDefault(a => a.Id == request);

            if (auditorium == null)
            {
                throw new NotFoundException(request, typeof(Auditorium));
            }

            auditorium.DeletedAt = DateTime.Now;
            auditorium.IsDeleted = true;
            auditorium.IsActive  = false;

            _context.SaveChanges();
        }
Beispiel #16
0
        public void Execute(MovieDto request)
        {
            var movie = _context.Movies.Find(request.Id);

            if (movie == null)
            {
                throw new NotFoundException(request.Id, typeof(MovieDto));
            }

            _validator.ValidateAndThrow(request);

            movie.Title       = request.Title;
            movie.Description = request.Description;
            movie.Duration    = request.Duration;
            movie.Image       = request.Image;
            movie.UpdatedAt   = DateTime.Now;

            _context.SaveChanges();
        }
Beispiel #17
0
        public void Execute(UserUpdateDto request)
        {
            var user = _context.Users.Find(request.Id);

            if (user == null)
            {
                throw new NotFoundException(request.Id, typeof(User));
            }

            if (user.Id != _actor.id)
            {
                throw new UnauthorizedException(this, _actor);
            }


            if (string.IsNullOrWhiteSpace(request.FirstName))
            {
                request.FirstName = user.FirstName;
            }

            if (string.IsNullOrWhiteSpace(request.LastName))
            {
                request.LastName = user.LastName;
            }

            if (!string.IsNullOrWhiteSpace(request.Password))
            {
                var md5 = MD5.Create();

                byte[] passwordBytes = Encoding.ASCII.GetBytes(request.Password);

                byte[] hash = md5.ComputeHash(passwordBytes);

                var stringBuilder = new StringBuilder();

                for (int i = 0; i < hash.Length; i++)
                {
                    stringBuilder.Append(hash[i].ToString("X2"));
                }

                var hashedPassword = stringBuilder.ToString();

                request.Password = hashedPassword;
            }
            else
            {
                request.Password = user.Password;
            }


            if (string.IsNullOrWhiteSpace(request.Email))
            {
                request.Email = user.Email;
            }

            _validator.ValidateAndThrow(request);

            user.FirstName = request.FirstName;
            user.LastName  = request.LastName;
            user.Password  = request.Password;
            user.Email     = request.Email;
            user.UpdatedAt = DateTime.Now;


            _context.SaveChanges();
        }
Beispiel #18
0
        public void Execute(UserDto request)
        {
            _validator.ValidateAndThrow(request);

            var md5 = MD5.Create();

            byte[] passwordBytes = Encoding.ASCII.GetBytes(request.Password);

            byte[] hash = md5.ComputeHash(passwordBytes);

            var stringBuilder = new StringBuilder();

            for (int i = 0; i < hash.Length; i++)
            {
                stringBuilder.Append(hash[i].ToString("X2"));
            }


            var hashedPassword = stringBuilder.ToString();

            var user = new User
            {
                FirstName = request.FirstName,
                LastName  = request.LastName,
                Email     = request.Email,
                Username  = request.Username,
                Password  = hashedPassword
            };

            _context.Users.Add(user);
            _context.SaveChanges();


            var lastId = _context.Users.Max(u => u.Id);

            var currentUser = _context.Users.Find(lastId);

            //Lista slucajemo kojima korisnik moze da pristupi
            var userUseCases = new List <int> {
                3, 6, 9, 11, 12, 14, 19, 20, 21, 25, 26
            };

            foreach (var cases in userUseCases)
            {
                _context.UserUseCases.Add(
                    new UserUseCases {
                    UserId    = currentUser.Id,
                    UseCaseId = cases
                }
                    );
            }

            _context.SaveChanges();

            _email.Send(new EmailDto
            {
                EmailTo = request.Email,
                Subject = "Movie Plus Registration",
                Content = "<h1>You have successfully register.</h1>"
            });
        }