Ejemplo n.º 1
0
        /// <summary>
        /// Get the user with a specific email
        /// </summary>
        /// <param name="idUser">ID User</param>
        /// <returns>Result object</returns>
        public DBResult <User> GetUser(string email)
        {
            DBResult <User> dbResult = new DBResult <User>();

            try
            {
                using (SevenDaysContext db = new SevenDaysContext(Configuration))
                {
                    var user = db.User.Where(u => u.Email == email).FirstOrDefault();
                    if (user == null)
                    {
                        dbResult.Message = "User not found";
                    }
                    else
                    {
                        dbResult.Success = true;
                        dbResult.Item    = user;
                    }
                }
            }
            catch (Exception ex)
            {
                dbResult.Message = Common.GetMessageError(ex);
            }


            return(dbResult);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Patch User
        /// </summary>
        /// <param name="patchUser">patch document</param>
        /// <param name="idUser">Id User</param>
        /// <returns>Result object</returns>
        public async Task <DBResult <User> > PatchUser(JsonPatchDocument <User> patchUser, int idUser)
        {
            DBResult <User> dbResult = new DBResult <User>();

            try
            {
                using (SevenDaysContext db = new SevenDaysContext(Configuration))
                {
                    // Get our original object from the database.
                    var user = await db.User.FindAsync(idUser);

                    if (user == null)
                    {
                        dbResult.Message = "Movie not found";
                        return(dbResult);
                    }

                    // Applying Path to DB Object
                    patchUser.ApplyTo(user);
                    db.User.Update(user);
                    await db.SaveChangesAsync();

                    dbResult.Item    = user;
                    dbResult.Success = true;
                }
            }
            catch (Exception ex)
            {
                dbResult.Message = Common.GetMessageError(ex);
            }


            return(dbResult);
        }
Ejemplo n.º 3
0
 /// <summary>
 /// Check if a like exists
 /// </summary>
 /// <param name="liked"></param>
 /// <returns></returns>
 public bool HasALike(Liked liked)
 {
     using (SevenDaysContext db = new SevenDaysContext(Configuration))
     {
         var likedDb = db.Liked.Where(lk => lk.IdMovie == liked.IdMovie && lk.IdUser == liked.IdUser).FirstOrDefault();
         if (likedDb == null)
         {
             return(false);
         }
         else
         {
             return(true);
         }
     }
 }
Ejemplo n.º 4
0
        /// <summary>
        /// Return rental
        /// </summary>
        /// <param name="id">Rental</param>
        /// <returns>Result object</returns>
        public DBResult <Rental> ReturnRental(int idRental)
        {
            DBResult <Rental> dbResult = new DBResult <Rental>();

            try
            {
                using (SevenDaysContext db = new SevenDaysContext(Configuration))
                {
                    var rental = db.Rental.Find(idRental);
                    if (rental == null)
                    {
                        dbResult.Message = "Rental not found";
                    }
                    else
                    {
                        // Calculate penalty(if apply)
                        DateTime today = DateTime.Now;
                        // Difference in days, hours, and minutes.
                        TimeSpan ts = today - (DateTime)rental.RentalDate;
                        // Difference in days.
                        int differenceInDays = ts.Days;

                        if (differenceInDays > 7)
                        {
                            // 5 per day of penalty
                            rental.Penalty = (decimal)(5.00m * ((decimal)differenceInDays - 7));
                        }
                        else
                        {
                            rental.Penalty = 0.000m;
                        }


                        db.Rental.Update(rental);
                        db.SaveChanges();
                        dbResult.Success = true;
                        dbResult.Item    = rental;
                    }
                }
            }
            catch (Exception ex)
            {
                dbResult.Message = Common.GetMessageError(ex);
            }

            return(dbResult);
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Get All movies
        /// </summary>
        /// <returns>Result object</returns>
        public DBResults <Movie> GetMovies()
        {
            DBResults <Movie> dbResult = new DBResults <Movie>();

            try
            {
                using (SevenDaysContext db = new SevenDaysContext(Configuration))
                {
                    var movie = db.Movie.Where(m => m.IsAvailable == true).OrderBy(m => m.Title).ToList();

                    dbResult.Success = true;
                    dbResult.Items   = movie;
                }
            }
            catch (Exception ex)
            {
                dbResult.Message = Common.GetMessageError(ex);
            }

            return(dbResult);
        }
Ejemplo n.º 6
0
        /// <summary>
        /// Get All movies filtered
        /// </summary>
        /// <returns>Result object</returns>
        public DBFResults <Movie> GetMoviesFiltered(FilterModel filter)
        {
            DBFResults <Movie> dbResult = new DBFResults <Movie>();

            try
            {
                using (SevenDaysContext db = new SevenDaysContext(Configuration))
                {
                    // Get filtered movies and count next page
                    dbResult.Items = FilterData(filter, filter, db).ToList();
                    FilterModel nextFilter = filter.Clone() as FilterModel;
                    nextFilter.Page         += 1;
                    dbResult.CountNextFilter = FilterData(nextFilter, filter, db).Count();
                    dbResult.Success         = true;
                }
            }
            catch (Exception ex)
            {
                dbResult.Message = Common.GetMessageError(ex);
            }

            return(dbResult);
        }
Ejemplo n.º 7
0
        /// <summary>
        /// Complex filter
        /// </summary>
        /// <param name="filterModel">filter new</param>
        /// <param name="filter">old filter</param>
        /// <param name="db">DB conext</param>
        /// <returns>Result enumerable</returns>
        private IEnumerable <Movie> FilterData(FilterModel filterModel, FilterModel filter, SevenDaysContext db)
        {
            // First filter
            IEnumerable <Movie> listaMovies;

            if (filterModel.IncludeInactive)
            {
                listaMovies = db.Movie.ToList();
            }
            else
            {
                listaMovies = db.Movie.Where(m => m.IsAvailable == true).ToList();
            }

            // Filter title
            if (filterModel.Title != null && !string.IsNullOrEmpty(filterModel.Title))
            {
                listaMovies = listaMovies.Where(m => m.Title.Contains(filterModel.Title, StringComparison.InvariantCultureIgnoreCase));
            }

            // Sorting movie list
            switch (filterModel.Sort)
            {
            case "title_desc":
                listaMovies = listaMovies.OrderByDescending(m => m.Title).ToList();
                break;

            case "title":
                listaMovies = listaMovies.OrderBy(m => m.Title).ToList();
                break;

            case "popularity_desc":
                listaMovies = listaMovies.OrderByDescending(m => m.LikesCounter).ToList();
                break;

            case "popularity":
                listaMovies = listaMovies.OrderBy(m => m.LikesCounter).ToList();
                break;

            default:
                listaMovies = listaMovies.OrderBy(m => m.Title).ToList();
                break;
            }

            // Filtering paging logic
            listaMovies = listaMovies.Skip((filterModel.Page - 1) * filter.Limit)
                          .Take(filterModel.Limit);

            return(listaMovies);
        }