public ActionResult Edit(SeanceViewModel seance)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    seanceService.UpdateSeance(seance);

                    seanceService.UpdateSeanceContents(seance);

                    System.Web.HttpContext.Current.Session[SESSION_UV] = true;

                    return(RedirectToAction("Edit"));
                }
                catch (ScheduleException ex)
                {
                    ViewBag.ScheduleError = ex.Message;

                    return(View(seance));
                }
            }
            else
            {
                return(View(seance));
            }
        }
        public ActionResult UpdateTimes(SeanceViewModel seanceVM)
        {
            seanceService.UpdateSeanceTimes(seanceVM);

            System.Web.HttpContext.Current.Session[SESSION_UV] = true;

            return(Json(new { success = true }));
        }
 public SeanceView()
 {
     InitializeComponent();
     viewModel          = new SeanceViewModel(this);
     comboBoxHall.Text  = GetHall();
     comboBoxMovie.Text = GetMovie();
     comboBoxHall.Items.AddRange(GetHallsArray());
     comboBoxMovie.Items.AddRange(GetMoviesArray());
     dateTimePicker.Value = GetDate();
 }
示例#4
0
        public async Task <IActionResult> Create()
        {
            SeanceViewModel mymodel = new SeanceViewModel();

            mymodel.seance      = new Model.Seance();
            mymodel.Professeurs = await _context.Professeur.ToListAsync();

            mymodel.Classes = await _context.Classe.ToListAsync();

            mymodel.Salles = await _context.Salle.ToListAsync();

            return(View(mymodel));
        }
示例#5
0
        public void CreateSeance_InvalidTimes_ThrowsException()
        {
            //  Arrange.
            SeanceViewModel svm = new SeanceViewModel()
            {
                Titre      = "Test Séance 1",
                HeureDebut = new DateTime(2020, 1, 1, 12, 0, 0),
                HeureFin   = new DateTime(2020, 1, 1, 12, 0, 0),
                SalleID    = 1
            };

            //  Act.
            //  Assert.
            Assert.ThrowsException <ScheduleException>(() => service.CreateSeance(svm));
        }
示例#6
0
        public ActionResult Details(long?seanceId, bool isCommon)
        {
            if (seanceId == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            SeanceDomainModel seanceDomianModel = _seanceService.ReadById(seanceId);
            SeanceViewModel   seanceViewModel   = Mapper.Map <SeanceDomainModel, SeanceViewModel>(seanceDomianModel);

            if (seanceViewModel == null)
            {
                return(HttpNotFound());
            }
            return(PartialView(isCommon ? "_Details" : "_DetailsPartial", seanceViewModel));
        }
示例#7
0
        public void EditSeance_ConflictedSeance_ThrowsException()
        {
            //  Arrange.
            SeanceViewModel svm = new SeanceViewModel()
            {
                SeanceID   = 1,
                Titre      = "Test Séance Changed",
                HeureDebut = new DateTime(2020, 1, 1, 15, 0, 0),
                HeureFin   = new DateTime(2020, 1, 1, 18, 0, 0),
                SalleID    = 1
            };

            //  Act.
            //  Assert.
            Assert.ThrowsException <ScheduleException>(() => service.UpdateSeance(svm));
        }
示例#8
0
        public void CreateSeance_ValidSeance_Successful()
        {
            //  Arrange.
            SeanceViewModel svm = new SeanceViewModel()
            {
                Titre      = "Test Séance",
                HeureDebut = new DateTime(2020, 1, 2, 12, 00, 00),
                HeureFin   = new DateTime(2020, 1, 2, 15, 00, 00),
                SalleID    = 1
            };

            //  Act.
            service.CreateSeance(svm);

            //  Assert.
            Assert.AreEqual(4, service.GetSeancesBySalle(1).ToList().Count);
        }
        /// <summary>
        /// An action returning a page with a list of all seances in an event
        /// </summary>
        /// <param name="id">The id of the event to show seances for</param>
        /// <returns>If user is in the event: Returns a page to view seances for the event</returns>
        public ActionResult Seances(int id)
        {
            //Get event and make sure user is in it
            MeetupModel model  = new MeetupModel();
            int?        infoId = this.UserId();

            if (infoId is null)
            {
                return(RedirectToAction("Index", "Home"));
            }
            SeanceViewModel viewModel = new SeanceViewModel();

            viewModel.Event = model.Events.SingleOrDefault(e => e.Id == id && (e.HostUserId == infoId || e.Invites.Any(u => u.UserId == infoId)));
            if (viewModel.Event is null)
            {
                return(RedirectToAction("Index", "Home"));
            }

            //sort seance list
            List <Seance> seances        = viewModel.Event.Seances.ToList();
            List <Seance> sortedMeetings = new List <Seance>();

            foreach (Seance meeting in seances)
            {
                bool sorted = false;
                for (int i = 0; i < sortedMeetings.Count; i++)
                {
                    if (meeting.MeetingNumber < sortedMeetings[i].MeetingNumber)
                    {
                        sortedMeetings.Insert(i, meeting);
                        sorted = true;
                        break;
                    }
                }
                if (!sorted)
                {
                    sortedMeetings.Add(meeting);
                }
            }

            viewModel.Seances = viewModel.Event.Seances.ToList();
            viewModel.UserId  = infoId.Value;

            return(View(viewModel));
        }
示例#10
0
        public void EditSeance_ValidSeance_Succesful()
        {
            //  Arrange.
            SeanceViewModel svm = new SeanceViewModel()
            {
                SeanceID   = 1,
                Titre      = "Test Séance Changed",
                HeureDebut = new DateTime(2020, 1, 1, 12, 0, 0),
                HeureFin   = new DateTime(2020, 1, 1, 15, 0, 0),
                SalleID    = 1
            };

            //  Act.
            service.UpdateSeance(svm);

            //  Assert.
            Assert.AreEqual(svm.Titre, service.GetSeance(svm.SeanceID).Titre);
        }
示例#11
0
        public ActionResult Edit(SeanceViewModel seanceViewModel)
        {
            if (seanceViewModel == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            if (!ModelState.IsValid)
            {
                return(PartialView("_EditPartial", seanceViewModel));
            }

            SeanceDomainModel seanceDomainModel = Mapper.Map <SeanceViewModel, SeanceDomainModel>(seanceViewModel);

            _seanceService.Update(seanceDomainModel);

            var url = Url.Action("List", "Seance", routeValues: new { filmId = seanceViewModel.FilmId });

            return(Json(new { success = true, url = url, replaceTarget = "#SeanceList" }));
        }
示例#12
0
        public ActionResult Edit(long?seanceId)
        {
            if (seanceId == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            SeanceDomainModel seanceDomianModel = _seanceService.ReadById(seanceId);
            SeanceViewModel   seanceViewModel   = Mapper.Map <SeanceDomainModel, SeanceViewModel>(seanceDomianModel);

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

            IEnumerable <SelectListItem> hallsCinemas = GetHallsCinemas();

            ViewBag.HallsCinemas = hallsCinemas;

            return(PartialView("_EditPartial", seanceViewModel));
        }
示例#13
0
        public async Task <IActionResult> Details(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }
            SeanceViewModel mymodel = new SeanceViewModel();

            mymodel.seance = await _context.Seance
                             .FirstOrDefaultAsync(m => m.IdSeance == id);

            mymodel.NomProfesseur = _context.Professeur.Find(mymodel.seance.ProfesseurId).Nom + " " + _context.Professeur.Find(mymodel.seance.ProfesseurId).Prenom;
            mymodel.LibelleClasse = _context.Classe.Find(mymodel.seance.ClasseId).Libelle;
            mymodel.LibelleSalle  = _context.Salle.Find(mymodel.seance.IdSalle).Libelle;
            if (mymodel.seance == null)
            {
                return(NotFound());
            }

            return(View(mymodel));
        }
        public async Task <ActionResult> CreateSeance(int?cinemaId)
        {
            if (cinemaId == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            Cinema hall = await db.Cinemas.FindAsync(c => c.Id == cinemaId);

            SeanceViewModel svm = new SeanceViewModel();

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

            svm.CinemaName = hall.Name;
            await PopulateSvmDropdownLists(cinemaId);

            return(View(svm));
        }
        public async Task <ActionResult> CreateSeance(SeanceViewModel svm)
        {
            if (ModelState.IsValid)
            {
                Hall hall = await db.Halls.FindAsync(h => h.Id == svm.Hall_ID);

                Movie movie = await db.Movies.FindAsync(m => m.Id == svm.Movie_ID);

                if (hall == null || movie == null)
                {
                    return(new HttpStatusCodeResult(HttpStatusCode.NotFound));
                }
                for (; svm.StartDate <= svm.EndDate; svm.StartDate = svm.StartDate.AddDays(1))
                {
                    Seance seance = new Seance
                    {
                        Date      = svm.StartDate,
                        Time      = svm.Time,
                        SeatsLeft = hall.Seats,
                        Price     = svm.Price,
                        MovieId   = svm.Movie_ID,
                        HallId    = svm.Hall_ID
                    };
                    seance.Movie = movie;
                    seance.Hall  = hall;
                    await db.Seances.InsertAsync(seance);
                }
                //Create seats to order for seances
                await CreateSeats();

                TempData["message"] = string.Format("Seances have been saved");
                return(RedirectToAction("ViewSeances", new { cinemaId = hall.CinemaId }));
            }
            else
            {
                TempData["message"] = string.Format("Seance hasn't been saved");
                return(View());
            }
        }
示例#16
0
        public async Task <IActionResult> Edit(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }
            SeanceViewModel mymodel = new SeanceViewModel();

            mymodel.seance = await _context.Seance
                             .FirstOrDefaultAsync(m => m.IdSeance == id);

            mymodel.Professeurs = await _context.Professeur.ToListAsync();

            mymodel.Classes = await _context.Classe.ToListAsync();

            mymodel.Salles = await _context.Salle.ToListAsync();

            if (mymodel.seance == null)
            {
                return(NotFound());
            }
            return(View(mymodel));
        }
示例#17
0
        public ActionResult Create(CreateSeanceViewModel createSeanceViewModel)
        {
            if (createSeanceViewModel == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            if (!ModelState.IsValid)
            {
                ViewBag.HallsCinemas = GetHallsCinemas();
                return(PartialView("_CreatePartial", createSeanceViewModel));
            }

            if (createSeanceViewModel.IsMultipleDateSelect)
            {
                var startDate = DateTime.ParseExact(createSeanceViewModel.Date, "dd/MM/yyyy", CultureInfo.InvariantCulture);
                var endDate   = DateTime.ParseExact(createSeanceViewModel.EndDate, "dd/MM/yyyy", CultureInfo.InvariantCulture);
                for (var date = startDate; date <= endDate; date = date.AddDays(1.0))
                {
                    SeanceViewModel   baseSeanceViewModel  = createSeanceViewModel;
                    SeanceDomainModel newSeanceDomainModel = Mapper.Map <SeanceViewModel, SeanceDomainModel>(baseSeanceViewModel);
                    newSeanceDomainModel.Date = date;
                    _seanceService.Add(newSeanceDomainModel);
                }
            }
            else
            {
                SeanceViewModel   seanceViewModel   = createSeanceViewModel;
                SeanceDomainModel seanceDomainModel = Mapper.Map <SeanceViewModel, SeanceDomainModel>(seanceViewModel);
                _seanceService.Add(seanceDomainModel);
            }

            var url = Url.Action("List", "Seance", routeValues: new { filmId = createSeanceViewModel.FilmId });

            return(Json(new { success = true, url = url, replaceTarget = "#SeanceList" }));
        }
示例#18
0
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            SeanceViewModel seance = seanceService.GetSeance(id.Value);

            if (System.Web.HttpContext.Current.Session[SESSION_UV] != null)
            {
                if ((bool)System.Web.HttpContext.Current.Session[SESSION_UV])
                {
                    ViewBag.UnsavedChanges = true;
                }
            }

            if (TempData["DuplicateError"] != null)
            {
                ViewBag.DuplicateError = TempData["DuplicateError"];
            }

            return(View(seance));
        }
示例#19
0
        public ActionResult Create(SeanceViewModel seance)
        {
            if (seance.Multiples)
            {
                int      chiffreFreq         = seance.ChiffreFreq;
                DateTime dateDebutHeureDebut = seance.DateDebutHeureDebut;
                DateTime dateDebutHeureFin   = seance.DateDebutHeureFin;
                DateTime dateFin             = seance.DateFin;
                int      nbSeances           = seance.NbSeances;

                if (seance.TypeFreq == "Jour")
                {
                    for (int i = 0; i < nbSeances; i++)
                    {
                        if (i == 0)
                        {
                            seance.HeureDebut = dateDebutHeureDebut;
                            seance.HeureFin   = dateDebutHeureFin;
                        }
                        else
                        {
                            seance.HeureDebut = seance.HeureDebut.AddDays(chiffreFreq);
                            seance.HeureFin   = seance.HeureFin.AddDays(chiffreFreq);
                        }
                        seanceService.CreateSeance(seance);
                    }
                }
                else if (seance.TypeFreq == "Semaine")
                {
                    if (seance.JoursSem != null)
                    {
                        string[] joursSem = new string[seance.JoursSem.Length];
                        int      numJour  = 0;

                        for (int i = 0; i < joursSem.Length; i++)
                        {
                            joursSem[i] = getJourSemaine(int.Parse(seance.JoursSem[i]));
                        }

                        while (dateDebutHeureDebut <= dateFin)
                        {
                            for (int i = 0; i < joursSem.Length; i++)
                            {
                                if (joursSem[i] == dateDebutHeureDebut.DayOfWeek.ToString())
                                {
                                    numJour           = i;
                                    seance.HeureDebut = dateDebutHeureDebut;
                                    seance.HeureFin   = dateDebutHeureFin;

                                    seanceService.CreateSeance(seance);
                                }
                            }

                            if (seance.ChiffreFreq > 1 && numJour == joursSem.Length - 1)
                            {
                                numJour             = 0;
                                dateDebutHeureDebut = dateDebutHeureDebut.AddDays(7 * (chiffreFreq - 1) + 1);
                                dateDebutHeureFin   = dateDebutHeureFin.AddDays(7 * (chiffreFreq - 1) + 1);
                            }
                            else
                            {
                                dateDebutHeureDebut = dateDebutHeureDebut.AddDays(1);
                                dateDebutHeureFin   = dateDebutHeureFin.AddDays(1);
                            }
                        }
                    }
                }
            }
            else
            {
                seanceService.CreateSeance(seance);
            }

            System.Web.HttpContext.Current.Session[SESSION_UV] = true;

            return(Json(new { success = true }));
        }