public ActionResult ShowMovie(AddProjectionVM model)
 {
     model.Projection.Movie = principal.Movies.Where(x => x.MovieID == model.MovieID).First();
     model.IsCurrent        = principal.Movies.Where(x => x.MovieID == model.Projection.Movie.MovieID).Select(x => x.IsCurrent).ToString();
     model.IsCurrent        = (model.IsCurrent == "0") ? "NO" : "YES";
     return(PartialView("ShowMovie", model));
 }
        public ActionResult GetProjections(string layout = null)
        {
            AddProjectionVM model = new AddProjectionVM();

            model.Projections = principal.Projections.ToList();
            return(View("GetProjections", layout, model));
        }
        public ActionResult AddProjection(string descript = null)
        {
            AddProjectionVM model = new AddProjectionVM();

            model.SuccessDescription = descript;

            return(View("AddProjection", model));
        }
        public ActionResult SubmitProjection(AddProjectionVM model, string btnType)
        {
            //if (!ModelState.IsValid)
            //    return
            DefinedDateTime ddt = new DefinedDateTime();

            if (principal.DefinedDateTimes.Where(x => x.DateTimeStart == model.Projection.DateTimeStart).FirstOrDefault() == null)
            {
                ddt.DateTimeStart = model.Projection.DateTimeStart;
                ddt.IsDeleted     = false;
                principal.DefinedDateTimes.Add(ddt);
                principal.SaveChanges();
            }
            else
            {
                ddt = principal.DefinedDateTimes.Where(x => x.DateTimeStart == model.Projection.DateTimeStart).First();
            }


            Projection p = new Projection();

            p.CinemaHallID     = model.CinemaHallID;
            p.CinemaHall       = principal.CinemaHalls.Where(x => x.CinemaHallID == model.CinemaHallID).First();
            p.DateTimeEnd      = model.Projection.DateTimeEnd;
            p.DateTimeStart    = ddt.DateTimeStart;
            p.MovieID          = model.Projection.Movie.MovieID;
            p.Movie            = principal.Movies.Where(x => x.MovieID == model.Projection.Movie.MovieID).First();
            p.TechnologyTypeID = model.TechTypeID;
            p.TechnologyType   = principal.TechnologyTypes.Where(x => x.TechnologyTypeID == model.TechTypeID).First();
            p.TicketPrice      = model.Projection.TicketPrice;
            p.IsDeleted        = false;
            principal.Projections.Add(p);
            principal.SaveChanges();

            foreach (Seat s in principal.Seats.Where(x => x.CinemaHallID == p.CinemaHallID && !x.IsDeleted).ToList())
            {
                ProjectionSeat ps = new ProjectionSeat();
                ps.IsDeleted    = false;
                ps.IsReserved   = false;
                ps.Seat         = s;
                ps.SeatID       = s.SeatID;
                ps.ProjectionID = p.ProjectionID;
                ps.Projection   = p;
                principal.ProjectionSeats.Add(ps);
                principal.SaveChanges();
            }
            return(RedirectToAction("AddProjection", new { descript = "New projection successfuly added !" }));
        }
        public ActionResult GetCinemaHallsForProjection(string dateStart, string dateEnd, string ProjectionMovieID, string MovieID)
        {
            AddProjectionVM model1 = new AddProjectionVM();
            int             ID     = int.Parse(MovieID);

            model1.Projection.Movie         = principal.Movies.Where(x => x.MovieID == ID).First();
            model1.Projection.DateTimeStart = DateTime.Parse(dateStart);
            model1.Projection.DateTimeEnd   = DateTime.Parse(dateEnd);

            List <Projection> p = principal.Projections.ToList();

            model1.CinemaHalls = principal.CinemaHalls.Select(x => new SelectListItem
            {
                Text  = x.Name,
                Value = x.CinemaHallID.ToString()
            }).ToList();

            //filtriraj dvorane koje su vec zauzete
            foreach (Projection pro in p)
            {
                if ((model1.Projection.DateTimeStart > pro.DateTimeStart && model1.Projection.DateTimeStart < pro.DateTimeEnd) ||
                    (model1.Projection.DateTimeEnd > pro.DateTimeStart && model1.Projection.DateTimeEnd < pro.DateTimeEnd) ||
                    ((model1.Projection.DateTimeStart > pro.DateTimeStart && model1.Projection.DateTimeStart < pro.DateTimeEnd) &&
                     (model1.Projection.DateTimeEnd > pro.DateTimeStart && model1.Projection.DateTimeEnd < pro.DateTimeEnd)))
                {
                    model1.CinemaHalls.Remove(model1.CinemaHalls.Where(x => x.Value == pro.CinemaHall.CinemaHallID.ToString()).Single());
                }
            }

            model1.TechTypes = principal.TechnologyTypes.Select(x => new SelectListItem
            {
                Text  = x.Name,
                Value = x.TechnologyTypeID.ToString()
            }).ToList();


            return(PartialView("GetCinemaHallsForProjection", model1));
        }
        public ActionResult ShowTrailler(AddProjectionVM model, string ButtonType)
        {
            //if (!ModelState.IsValid)
            //    return RedirectToAction("AddProjection", model);
            if (ButtonType != "next")
            {
                model.Traillers = Algorithm.SuggestTrailerLinks(model.Projection.Movie.MovieName, 3);
            }

            if (ButtonType == "save")
            {
                Movie m = model.Projection.Movie;
                m.IsDeleted = false;
                m.GenreID   = model.GenreID;
                m.Genre     = principal.Genres.Where(x => x.GenreID == model.GenreID).First();
                m.Trailler  = model.Traillers[0];
                principal.Movies.Add(m);
                principal.SaveChanges();

                foreach (int i in model.ActorsIDs)
                {
                    MovieRole mr = new MovieRole();
                    mr.MovieID   = m.MovieID;
                    mr.ActorID   = i;
                    mr.Actor     = principal.Actors.Where(x => x.ActorID == i).First();
                    mr.IsDeleted = false;
                    principal.MovieRoles.Add(mr);
                    principal.SaveChanges();
                }

                foreach (int i in model.DirectorsIDs)
                {
                    MovieDirection md = new MovieDirection();
                    md.MovieID    = m.MovieID;
                    md.DirectorID = i;
                    md.Director   = principal.Directors.Where(x => x.DirectorID == i).First();
                    md.IsDeleted  = false;
                    principal.MovieDirections.Add(md);
                    principal.SaveChanges();
                    model.Projection.Movie.MovieID = md.MovieID;
                }

                model.Movies = principal.Movies.Select(x => new SelectListItem
                {
                    Text  = x.OriginalName + "(" + x.MovieName + ")",
                    Value = x.MovieID.ToString()
                }).ToList();

                model.Movies = model.Movies.OrderByDescending(x => int.Parse(x.Value)).ToList();

                model.Projection.Movie.MovieRoles      = principal.MovieRoles.Where(x => x.MovieID == m.MovieID).ToList();
                model.Projection.Movie.MovieDirections = principal.MovieDirections.Where(x => x.MovieID == m.MovieID).ToList();

                model.IsCurrent = principal.Movies.Where(x => x.MovieID == m.MovieID).Select(x => x.IsCurrent).ToString();
                model.IsCurrent = (model.IsCurrent == "0") ? "NO" : "YES";

                return(PartialView("SetProjection", model));
            }

            if (ButtonType == "next")
            {
                return(PartialView("SetProjection", model));
            }

            //model.Projection.Movie.Genre.GenreName = genreName;
            //model.IsCurrent = (principal.Movies.Where(x => x.IsCurrent.ToString() == model.IsCurrent).ToString() == "0") ? "NO" : "YES";
            return(View("ShowTrailler", model));
        }