public IActionResult CreateBillBoard([FromBody] BillboardViewModel model) { string Email = User.FindFirstValue(ClaimTypes.Email); if (Email is null) { return(BadRequest()); } User user = dbHandler.Users.FirstOrDefault(x => x.Email == Email); if (user is null) { return(BadRequest()); } try { Billboard billboard = new Billboard { Name = model.Name, BeginDate = model.BeginDate, EndDate = model.EndDate, Owner = user }; dbHandler.Billboards.Add(billboard); if (model.Movies.Count > 0) { foreach (Movie movie in model.Movies) { Movie movie_db = dbHandler.Movies.FirstOrDefault(x => x.Id == movie.Id); if (movie_db is null) { continue; } BillboardMovieRegister billboardMovieRegister = new BillboardMovieRegister { Movie = movie_db, Billboard = billboard }; dbHandler.BillboardMovieRegisters.Add(billboardMovieRegister); } } dbHandler.SaveChanges(); } catch (Exception) { return(BadRequest(Message.GetMessage("Error al intentar crear una cartellera"))); } return(Ok()); }
public IActionResult GetBillBoard() { List <Billboard> billBoards = dbHandler.Billboards.Include(x => x.BillboardMovieRegister).Where(x => x.BeginDate <= DateTime.Now && x.EndDate >= DateTime.Now).ToList(); List <BillboardMovieRegister> billboardMovieRegisters = new List <BillboardMovieRegister>(); DateTime DefaultDate = DateTime.Parse("10/10/1000").Date; DateTime beginDate = DefaultDate; DateTime endDate = DefaultDate; User owner = null; foreach (Billboard bb in billBoards) { if (owner is null) { owner = bb.Owner; } if (beginDate == DefaultDate || beginDate > bb.BeginDate) { beginDate = bb.BeginDate; } if (endDate == DefaultDate || endDate < bb.EndDate) { endDate = bb.EndDate; } foreach (BillboardMovieRegister bbmr in bb.BillboardMovieRegister) { BillboardMovieRegister bbmr_db = dbHandler.BillboardMovieRegisters.Include(x => x.Movie).FirstOrDefault(x => x.Id == bbmr.Id); if (bbmr_db is null) { continue; } billboardMovieRegisters.Add(bbmr_db); } } Billboard Billboard = new Billboard { BeginDate = beginDate, EndDate = endDate, BillboardMovieRegister = billboardMovieRegisters, Owner = owner }; return(Ok(Billboard)); }
public IActionResult UpdateBillBoard([FromBody] BillboardUpdateViewModel model) { Billboard billBoardToUpdate = dbHandler.Billboards.Include(x => x.BillboardMovieRegister).FirstOrDefault(x => x.Id.ToString() == model.Id); DateTime DefaultDate = DateTime.Parse("10/10/1000").Date; billBoardToUpdate.Name = (model.Name.Length > 0) ? model.Name : billBoardToUpdate.Name; billBoardToUpdate.BeginDate = (model.BeginDate != DefaultDate) ? model.BeginDate : billBoardToUpdate.BeginDate; billBoardToUpdate.EndDate = (model.EndDate != DefaultDate) ? model.EndDate : billBoardToUpdate.EndDate; try { dbHandler.Billboards.Update(billBoardToUpdate); List <Movie> moviesToIgnore = new List <Movie>(); foreach (BillboardMovieRegister bbmr in billBoardToUpdate.BillboardMovieRegister) { BillboardMovieRegister bbmr_db = dbHandler.BillboardMovieRegisters.Include(x => x.Movie).FirstOrDefault(x => x.Id == bbmr.Id); if (bbmr_db is null || model.Movies.Contains(bbmr_db.Movie)) { moviesToIgnore.Add(bbmr_db.Movie); continue; } dbHandler.BillboardMovieRegisters.Remove(bbmr_db); } foreach (Movie m in model.Movies) { Movie is_in_db = dbHandler.Movies.FirstOrDefault(x => x.Id == m.Id); if (is_in_db is null || moviesToIgnore.Contains(is_in_db)) { continue; } BillboardMovieRegister bbmr = new BillboardMovieRegister { Billboard = billBoardToUpdate, Movie = is_in_db }; billBoardToUpdate.BillboardMovieRegister.Add(bbmr); } dbHandler.SaveChanges(); } catch (Exception) { return(BadRequest(Message.GetMessage("Error la intentar actualitzar la cartellera"))); } return(Ok()); }