Beispiel #1
0
        public async Task <ActionResult> Add(FormCollection collection)
        {
            string movieTitle = collection?.GetValue(nameof(AppDAL.pocos.Movies.Title))?.AttemptedValue;

            if (string.IsNullOrWhiteSpace(movieTitle))
            {
                throw new HttpException(400, "Title cannot be empty");
            }

            using (var dbc = new AppDAL.AppDataDbContext())
            {
                dbc.Movies.Add(new AppDAL.pocos.Movies()
                {
                    Title       = movieTitle,
                    Description = collection.GetValue(nameof(AppDAL.pocos.Movies.Description)).AttemptedValue,
                    UserId      = User.Identity.GetUserId()
                });

                try
                {
                    await dbc.SaveChangesAsync();
                }
                catch (Exception ex)
                {
                    throw new HttpException(500, $"Could not save data. {ex.Message}");
                }
            }

            return(View());
        }
Beispiel #2
0
        public void UpdateFromSourceForUser(string userId, string currentUserId)
        {
            if (string.IsNullOrEmpty(userId) && string.IsNullOrEmpty(currentUserId))
            {
                return;
            }

            IsByCurrentUser = userId.Equals(currentUserId, StringComparison.OrdinalIgnoreCase);

            using (var dbc = new Models.ApplicationDbContext())
            {
                try
                {
                    UserName = dbc.Users
                               .Where(x => x.Id.Equals(userId))
                               .Select(x => x.UserName)
                               .ToList()
                               .First();
                }
                catch (Exception ex) when(ex is ArgumentNullException || ex is InvalidOperationException)
                {
                    UserName = "******";
                }
            }

            using (var dbc = new AppDAL.AppDataDbContext())
            {
                Movies = dbc.Movies
                         .Where(x => x.UserId.Equals(userId, StringComparison.OrdinalIgnoreCase))
                         .OrderByDescending(x => x.DateAdded)
                         .ToList();
            }
        }
Beispiel #3
0
        public async Task <ActionResult> UserDisposition()
        {
            // Get items from query string
            if (!int.TryParse(Convert.ToString(Request.QueryString["movieId"]), out int iRequestMovieId))
            {
                throw new HttpException(400, "Invalid Movie");
            }
            if (!int.TryParse(Convert.ToString(Request.QueryString["value"]), out int iRequestDisposition))
            {
                throw new HttpException(400, "Invalid Disposition");
            }
            //
            var currentUserId = User.Identity.GetUserId();

            //
            using (var dbc = new AppDAL.AppDataDbContext())
            {
                // get user who added requested movie
                var IsFromCurrentUser =
                    dbc.Movies
                    .Where(x => x.Id == iRequestMovieId && x.UserId.Equals(currentUserId))
                    .Any();

                if (IsFromCurrentUser)
                {
                    return(RedirectToAction(nameof(Index)));
                }

                // Get current user disposition
                try
                {
                    var currentUserDispositionForMovie =
                        dbc.MoviesUsersDisposition
                        .Where(x => x.MovieId == iRequestMovieId && x.UserId.Equals(currentUserId))
                        .First();

                    //
                    currentUserDispositionForMovie.DateTimeSet = DateTime.UtcNow;
                    currentUserDispositionForMovie.MovieId     = iRequestMovieId;
                    currentUserDispositionForMovie.UserId      = currentUserId;
                    currentUserDispositionForMovie.Like        = iRequestDisposition == (int)NHome.Definitions.DispositionResult.Like;
                }
                catch (Exception ex) when(ex is ArgumentNullException || ex is InvalidOperationException)
                {
                    dbc.MoviesUsersDisposition.Add(new AppDAL.pocos.MoviesUsersDisposition()
                    {
                        DateTimeSet = DateTime.UtcNow,
                        MovieId     = iRequestMovieId,
                        UserId      = currentUserId,
                        Like        = iRequestDisposition == (int)NHome.Definitions.DispositionResult.Like,
                    });
                }
                catch (Exception ex)
                {
                    throw new HttpException(500, $"Something went wrong. {ex.Message}");
                }

                //
                try
                {
                    await dbc.SaveChangesAsync();
                }
                catch (Exception ex)
                {
                    throw new HttpException(500, $"Could not save data. {ex.Message}");
                }
            }

            return(RedirectToAction(nameof(Index)));
        }
Beispiel #4
0
        public static IEnumerable <Index> Get(string currentUserId, string orderBy)
        {
            if (string.IsNullOrWhiteSpace(currentUserId))
            {
                return(new List <Index>());
            }
            //
            using (var Appdbc = new Models.ApplicationDbContext())
                using (var dbc = new AppDAL.AppDataDbContext())
                {
                    var res = (from m in dbc.Movies
                               select new ModelsView.MoviesSetup.Index
                    {
                        Movies = m,
                    }).ToList();

                    foreach (var item in res)
                    {
                        {
                            var user = (from u in Appdbc.Users
                                        where u.Id == item.Movies.UserId
                                        select new Common.SimpleUserData
                            {
                                UserName = u.UserName,
                                Id = u.Id
                            })
                                       .ToList()
                                       .DefaultIfEmpty(new Common.SimpleUserData {
                                UserName = "******", Id = null
                            })
                                       .First();
                            if ((user.Id?.Equals(currentUserId, System.StringComparison.OrdinalIgnoreCase)) ?? false)
                            {
                                item.PostedByUser    = "******";
                                item.FromCurrentUser = true;
                            }
                            else
                            {
                                item.PostedByUser    = user.UserName;
                                item.FromCurrentUser = false;
                            }
                            item.UserId = user.Id;
                        }
                        {
                            var resDisposition = dbc.MoviesUsersDisposition
                                                 .Where(x => x.MovieId.Equals(item.Movies.Id) && x.UserId.Equals(currentUserId))
                                                 .Select(x => x.Like);

                            item.UserDisposition = (byte)DispositionResult.NotAvailable;
                            if (resDisposition.Any())
                            {
                                item.UserDisposition = resDisposition.First() ? (byte)DispositionResult.Like : (byte)DispositionResult.Hate;
                            }
                        }

                        var resLikes = dbc.MoviesUsersDisposition
                                       .Where(x => x.MovieId.Equals(item.Movies.Id))
                                       .GroupBy(x => x.Like)
                                       .Select(x => new
                        {
                            disposition = x.Key,
                            count       = x.Count()
                        }).ToDictionary(x => x.disposition, x => x.count);

                        //
                        int iVal;
                        item.Likes = 0;
                        item.Hates = 0;
                        if (resLikes.TryGetValue(true, out iVal))
                        {
                            item.Likes = iVal;
                        }
                        if (resLikes.TryGetValue(false, out iVal))
                        {
                            item.Hates = iVal;
                        }
                    }

                    //
                    return(SortData(orderBy, res));
                }
        }
Beispiel #5
0
        public static IEnumerable <Index> Get(string currentUserId, string orderBy)
        {
            if (string.IsNullOrWhiteSpace(currentUserId))
            {
                return(new List <Index>());
            }

            //
            using (var Appdbc = new Models.ApplicationDbContext())
                using (var dbc = new AppDAL.AppDataDbContext())
                {
                    var res = (from m in dbc.Movies
                               select new ModelsView.Home.Index
                    {
                        Movies = m,
                    }).ToList();

                    foreach (var item in res)
                    {
                        {
                            var user = (from u in Appdbc.Users
                                        where u.Id == item.Movies.UserId
                                        select u.UserName)
                                       .DefaultIfEmpty("Unknow User")
                                       .First();
                            item.PostedByUser = user;
                        }
                        {
                            var resDisposition = dbc.MoviesUsersDisposition
                                                 .Where(x => x.MovieId.Equals(item.Movies.Id) && x.UserId.Equals(currentUserId))
                                                 .Select(x => x.Like);

                            item.UserDisposition = (byte)DispositionResult.NotAvailable;
                            if (resDisposition.Any())
                            {
                                item.UserDisposition = resDisposition.First() ? (byte)DispositionResult.Like : (byte)DispositionResult.Hate;
                            }
                        }
                        item.FromCurrentUser = string.Compare(item.Movies.UserId, currentUserId, true) == 0;
                        var resLikes = dbc.MoviesUsersDisposition
                                       .Where(x => x.MovieId.Equals(item.Movies.Id))
                                       .GroupBy(x => x.Like)
                                       .Select(x => new
                        {
                            disposition = x.Key,
                            count       = x.Count()
                        }).ToDictionary(x => x.disposition, x => x.count);

                        //
                        int iVal;
                        item.Likes = 0;
                        item.Hates = 0;
                        if (resLikes.TryGetValue(true, out iVal))
                        {
                            item.Likes = iVal;
                        }
                        if (resLikes.TryGetValue(false, out iVal))
                        {
                            item.Hates = iVal;
                        }
                    }

                    //
                    return(SortData(orderBy, res));
                }
        }