public ActionResult DeleteAllMessages(int?profileIntegerId)
        {
            if (profileIntegerId == null)
            {
                return(RedirectToAction("Index", "Home"));
            }

            var db = new FavorDbContext();

            var user = db.Users
                       .Include(u => u.Messages)
                       .Include(u => u.TicketsForSender)
                       .Include(u => u.TicketsForAdmin)
                       .FirstOrDefault(u => u.IntegerId == profileIntegerId);

            if (user == null)
            {
                return(RedirectToAction("Index", "Home"));
            }

            user.Messages.Clear();
            user.TicketsForAdmin.Clear();
            user.TicketsForSender.Clear();

            db.SaveChanges();

            return(RedirectToAction("Profile", "Profile"));
        }
Beispiel #2
0
        public ActionResult Delete(FavorDeleteViewModel favorDeleteViewModel)
        {
            if (favorDeleteViewModel == null)
            {
                return(RedirectToAction("Index", "Home"));
            }

            var db        = new FavorDbContext();
            var fullFavor = db.Favors.FirstOrDefault(f => f.Id == favorDeleteViewModel.Id);

            if (fullFavor == null)
            {
                return(RedirectToAction("Index", "Home"));
            }

            var allUsers = db.Users.Include(u => u.SentFavors).Include(u => u.PendingFavors).Include(u => u.Messages).ToList();

            DeleteAllPendingAndSentRequestsFromUsersAccounts(allUsers, favorDeleteViewModel.Id);

            db.Favors.Remove(fullFavor);

            db.SaveChanges();

            return(RedirectToAction("Index", "Home"));
        }
        public ActionResult Profile()
        {
            var db = new FavorDbContext();

            var currUserId = this.User.Identity.GetUserId();

            var userToView = db.Users.Include(u => u.MyFavors)
                             .Include(u => u.Messages)
                             .Include(u => u.SentFavors)
                             .Include(u => u.PendingFavors)
                             .Include(u => u.AccomplishedFavors)
                             .Include(u => u.TicketsForSender)
                             .Include(u => u.TicketsForAdmin)
                             .FirstOrDefault(u => u.Id == currUserId);

            if (userToView == null)
            {
                return(RedirectToAction("Index", "Home"));
            }

            FavorDetailViewModel.LastUsedUrl   = "/Profile/Profile";
            FavorDeleteViewModel.UrlOpenedFrom = "/Profile/Profile";
            FavorEditViewModel.UrlOpenedFrom   = "/Profile/Profile";

            return(View(userToView));
        }
Beispiel #4
0
        public ActionResult Details(int?id)
        {
            if (id == null)
            {
                return(RedirectToAction("Index", "Home"));
            }

            var db = new FavorDbContext();

            var fullFavor = db.Favors.Include(a => a.PayOff).FirstOrDefault(a => a.Id == id);

            if (fullFavor == null)
            {
                return(RedirectToAction("Index", "Home"));
            }

            FavorDetailViewModel favorDetailModel = new FavorDetailViewModel
            {
                Id           = fullFavor.Id,
                Title        = fullFavor.Title,
                Description  = fullFavor.Description,
                CreationDate = fullFavor.CreationDate,
                UserFullName = fullFavor.User.FullName,
                PayOff       = fullFavor.PayOff,
                FavorType    = fullFavor.FavorType,
                User         = fullFavor.User
            };

            FavorDeleteViewModel.UrlOpenedFrom = $"/Favor/Details/{id}";
            FavorEditViewModel.UrlOpenedFrom   = $"/Favor/Details/{id}";

            return(View(favorDetailModel));
        }
Beispiel #5
0
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(RedirectToAction("Index", "Home"));
            }

            var db = new FavorDbContext();

            var fullFavor = db.Favors.Include(f => f.PayOff).FirstOrDefault(f => f.Id == id);

            if (fullFavor == null)
            {
                return(RedirectToAction("Index", "Home"));
            }

            var favorEditViewModel = new FavorEditViewModel
            {
                Id          = fullFavor.Id,
                Title       = fullFavor.Title,
                Description = fullFavor.Description,
                PayOff      = fullFavor.PayOff,
                FavorType   = fullFavor.FavorType,
                Category    = fullFavor.FavorCategory
            };

            return(View(favorEditViewModel));
        }
Beispiel #6
0
        public ActionResult Delete(int?id)
        {
            if (id == null)
            {
                return(RedirectToAction("Index", "Home"));
            }

            var db = new FavorDbContext();

            var fullFavor = db.Favors.FirstOrDefault(f => f.Id == id);

            if (fullFavor == null)
            {
                return(RedirectToAction("Index", "Home"));
            }

            var favorDeleteModel = new FavorDeleteViewModel
            {
                Title       = fullFavor.Title,
                Description = fullFavor.Description,
                Id          = fullFavor.Id
            };

            return(View(favorDeleteModel));
        }
Beispiel #7
0
        public ActionResult Edit(FavorEditViewModel favorEditViewModel)
        {
            if (favorEditViewModel == null)
            {
                return(RedirectToAction("Index", "Home"));
            }

            var db = new FavorDbContext();

            var fullFavor = db.Favors.FirstOrDefault(f => f.Id == favorEditViewModel.Id);

            if (fullFavor == null)
            {
                return(RedirectToAction("Index", "Home"));
            }

            fullFavor.Title         = favorEditViewModel.Title;
            fullFavor.Description   = favorEditViewModel.Description;
            fullFavor.PayOff        = favorEditViewModel.PayOff;
            fullFavor.FavorType     = favorEditViewModel.FavorType;
            fullFavor.FavorCategory = favorEditViewModel.Category;

            db.Entry(fullFavor).State = EntityState.Modified;
            db.SaveChanges();

            return(RedirectToAction("Details", new { @id = fullFavor.Id }));
        }
Beispiel #8
0
        public ActionResult ListAllTypeSearch(int currentPage = 1, Category category = (Category)0)
        {
            var db = new FavorDbContext();

            List <ListAllFavorsModel> allTypeSearch = new List <ListAllFavorsModel>();

            if (category == Category.All)
            {
                allTypeSearch = db
                                .Favors
                                .OrderByDescending(x => x.Id)
                                .Where(f => f.FavorType == FavorType.Offers)
                                .Skip((currentPage - 1) * PageConstants.CountOfFavorsOnPage)
                                .Take(PageConstants.CountOfFavorsOnPage)
                                .Select(f => new ListAllFavorsModel
                {
                    Id          = f.Id,
                    Title       = f.Title,
                    Description = f.Description,
                    Category    = f.FavorCategory,
                    FullName    = f.User.FullName
                })
                                .ToList();
            }
            else
            {
                allTypeSearch = db
                                .Favors
                                .OrderByDescending(x => x.Id)
                                .Where(f => f.FavorType == FavorType.Offers &&
                                       f.FavorCategory == category)
                                .Skip((currentPage - 1) * PageConstants.CountOfFavorsOnPage)
                                .Take(PageConstants.CountOfFavorsOnPage)
                                .Select(f => new ListAllFavorsModel
                {
                    Id          = f.Id,
                    Title       = f.Title,
                    Description = f.Description,
                    Category    = f.FavorCategory,
                    FullName    = f.User.FullName
                })
                                .ToList();
            }


            if (allTypeSearch == null)
            {
                RedirectToAction("Index", "Home");
            }

            ViewBag.CurrentPage     = currentPage;
            ViewBag.CurrentCategory = category;

            FavorDetailViewModel.LastUsedUrl = $"/Favor/ListAllTypeSearch?currentPage={currentPage}&category={category}";

            return(View(allTypeSearch));
        }
        public ActionResult SendTicket(string title, string content, string senderEmail)
        {
            if (this.User.IsInRole("Admin") ||
                senderEmail == null ||
                title == null ||
                content == null)
            {
                return(RedirectToAction("Index", "Home"));
            }

            var db = new FavorDbContext();

            List <User> allAdmins = new List <User>();

            var roleManager = new RoleManager <IdentityRole>(new RoleStore <IdentityRole>(db));
            var adminRole   = roleManager.FindByName("Admin");

            allAdmins = db.Users.Where(x => x.Roles.Any(s => s.RoleId == adminRole.Id)).ToList();

            if (allAdmins.Count == 0)
            {
                return(RedirectToAction("Index", "Home"));
            }

            var senderUser = db.Users.FirstOrDefault(u => u.Email == senderEmail);

            var ticketForSender = new TicketForSender
            {
                Title   = title,
                Content = content
            };

            senderUser.TicketsForSender.Add(ticketForSender);
            senderUser.Notifications.FromMessages += 1;

            foreach (var user in allAdmins)
            {
                var ticketForAdmin = new TicketForAdmin
                {
                    SenderId       = senderUser.Id,
                    SenderFullName = senderUser.FullName,
                    RecieverEmail  = user.Email,
                    Title          = title,
                    Content        = content,
                };

                user.TicketsForAdmin.Add(ticketForAdmin);
                user.Notifications.FromMessages += 1;
            }

            db.SaveChanges();

            MessageManager.TicketHasBeenSent = true;

            return(RedirectToAction("Contact", "Home"));
        }
        public ActionResult SendMessage(Message sentMessage)
        {
            if (!ModelState.IsValid)
            {
                return(RedirectToAction("Index", "Home"));
            }

            var db = new FavorDbContext();

            var receiverUser = db.Users.Include(u => u.Messages).FirstOrDefault(u => u.Id == sentMessage.ReceiverId);
            var senderUser   = db.Users.Include(u => u.Messages).FirstOrDefault(u => u.UserName == sentMessage.SenderEmail);

            if (receiverUser == null || senderUser == null)
            {
                return(RedirectToAction("Index", "Home"));
            }

            MessageType forTheReciever = MessageType.Received;

            if (this.User != null && this.User.IsInRole("Admin"))
            {
                forTheReciever = MessageType.FromAdmin;
            }

            if (sentMessage.Type == MessageType.System)
            {
                forTheReciever = MessageType.System;
            }

            MessageType forTheSender = MessageType.Sent;

            if (sentMessage.Type == MessageType.System)
            {
                forTheSender = MessageType.System;
            }

            var messageForTheReceiver = Message.ToMessage(sentMessage);

            messageForTheReceiver.Type = forTheReciever;

            var messageForTheSender = Message.ToMessage(sentMessage);

            messageForTheSender.Type = forTheSender;

            receiverUser.Messages.Add(messageForTheReceiver);
            senderUser.Messages.Add(messageForTheSender);

            receiverUser.Notifications.FromMessages += 1;
            senderUser.Notifications.FromMessages   += 1;

            db.SaveChanges();

            MessageManager.MessageHasBeenSent = true;

            return(RedirectToAction("OtherProfile", "Profile", new { @otherProfileId = receiverUser.Id }));
        }
        public ActionResult ExecuteTheTrade(int?favorId, string recieverId, string tradeOff)
        {
            if (User.Identity.GetUserId() == recieverId)
            {
                return(RedirectToAction("Details", "Favor", new { @id = favorId }));
            }

            if (!ParamsAreValid(favorId, recieverId, tradeOff))
            {
                return(RedirectToAction("Index", "Home"));
            }

            var db = new FavorDbContext();

            var senderId = User.Identity.GetUserId();

            if (db.FavorTradeModels.Any(f => f.SenderId == senderId && f.FavorId == favorId))
            {
                return(RedirectToAction("Details", "Favor", new { @id = favorId }));
            }

            var exchangeFavor = db.Favors.Find(favorId);

            var senderUser = db.Users
                             .FirstOrDefault(u => u.Id == senderId);

            var recieverUser = db.Users.Find(recieverId);

            if (!ParamsAreValid(exchangeFavor, recieverUser, senderUser))
            {
                return(RedirectToAction("Index", "Home"));
            }


            var favorTradeModel = new FavorTradeModel
            {
                FavorTitle       = exchangeFavor.Title,
                FavorContent     = exchangeFavor.Description,
                RecieverFullName = recieverUser.FullName,
                SenderFullName   = senderUser.FullName,
                SenderId         = senderUser.Id,
                RecieverId       = recieverUser.Id,
                TradeOff         = tradeOff,
                FavorId          = exchangeFavor.Id
            };

            recieverUser.PendingFavors.Add(favorTradeModel);
            senderUser.SentFavors.Add(favorTradeModel);

            recieverUser.Notifications.FromPendingFavors += 1;

            db.SaveChanges();

            return(RedirectToAction("Details", "Favor", new { @id = favorId }));
        }
        public ActionResult DeleteMessage(int id)
        {
            var db = new FavorDbContext();

            var messageToRemove = db.Messages.FirstOrDefault(m => m.Id == id);

            if (messageToRemove != null)
            {
                db.Messages.Remove(messageToRemove);

                db.SaveChanges();
            }

            return(RedirectToAction("Profile", "Profile"));
        }
Beispiel #13
0
        public ActionResult Create(Data.Favor favor)
        {
            if (ModelState.IsValid)
            {
                var db = new FavorDbContext();

                var currentUserId = User.Identity.GetUserId();

                favor.UserId = currentUserId;

                var user = db.Users.Find(currentUserId);
                user.MyFavors.Add(favor);

                db.SaveChanges();
            }


            return(RedirectToAction("Index", "Home"));
        }
        public ActionResult OtherProfile(string otherProfileId)
        {
            if (otherProfileId == null)
            {
                return(RedirectToAction("Index", "Home"));
            }

            var db = new FavorDbContext();

            var otherUser = db.Users
                            .Include(u => u.MyFavors)
                            .FirstOrDefault(u => u.Id == otherProfileId);

            if (otherUser == null)
            {
                return(RedirectToAction("Index", "Home"));
            }

            return(View(otherUser));
        }
        // GET: AccomplishedFavor
        public ActionResult AccomplishedFavorDetails(int?id)
        {
            if (id == null)
            {
                return(RedirectToAction("Index", "Home"));
            }

            var db     = new FavorDbContext();
            var userId = this.User.Identity.GetUserId();
            var user   = db.Users.Include(u => u.AccomplishedFavors).FirstOrDefault(u => u.Id == userId);

            var accomplishedFavor = user.AccomplishedFavors.First(f => f.Id == id);

            if (accomplishedFavor == null)
            {
                return(RedirectToAction("Index", "Home"));
            }



            return(View(accomplishedFavor));
        }
Beispiel #16
0
        public ActionResult SearchResult(string toSearch, SearchOptions options)
        {
            if (toSearch == null || toSearch == string.Empty)
            {
                return(RedirectToAction("Search"));
            }

            var db = new FavorDbContext();


            if (options == SearchOptions.Favors)
            {
                SearchManager.Options = SearchOptions.Favors;

                SearchManager.FavorsToList = new List <Data.Favor>();

                SearchManager.FavorsToList = db.Favors.Where(f => f.Title.Contains(toSearch) ||
                                                             f.Description.Contains(toSearch) ||
                                                             f.User.FullName.Contains(toSearch))
                                             .ToList();
            }
            else
            {
                SearchManager.Options = SearchOptions.Users;

                SearchManager.UsersToList = new List <Data.User>();

                SearchManager.UsersToList = db.Users.Where(u => u.FullName.Contains(toSearch) ||
                                                           u.Email.Contains(toSearch))
                                            .Include(u => u.MyFavors)
                                            .Include(u => u.AccomplishedFavors)
                                            .ToList();
            }

            Favor.Models.FavorModels.FavorDetailViewModel.LastUsedUrl = "/Search/Search";

            return(RedirectToAction("Search"));
        }
        public ActionResult DeleteTicket(int?id)
        {
            var db = new FavorDbContext();

            var currentUserEmail = User.Identity.GetUserName();
            var currentUser      = db.Users
                                   .Include(u => u.TicketsForAdmin)
                                   .Include(u => u.TicketsForSender)
                                   .FirstOrDefault(u => u.Email == currentUserEmail);

            if (this.User.IsInRole("Admin"))
            {
                currentUser.TicketsForAdmin.RemoveAll(t => t.Id == id);
            }

            else
            {
                currentUser.TicketsForSender.RemoveAll(t => t.Id == id);
            }

            db.SaveChanges();
            return(RedirectToAction("Profile", "Profile"));
        }
        public ActionResult CancelTrade(int?id)
        {
            if (!ParamsAreValid(id))
            {
                return(RedirectToAction("Profile", "Profile"));
            }

            var db = new FavorDbContext();

            var favorTradeModel = db.FavorTradeModels.Find(id);

            if (!ParamsAreValid(favorTradeModel))
            {
                return(RedirectToAction("Profile", "Profile"));
            }

            var userThatSendsCancelMessage = db.Users.FirstOrDefault(u => u.Id == favorTradeModel.SenderId);

            Message cancelMessage = new Message
            {
                ReceiverId  = favorTradeModel.RecieverId,
                SenderEmail = userThatSendsCancelMessage.Email,
                Title       = favorTradeModel.FavorTitle,
                Content     = "The trade favor with this title was canceled",
                Type        = MessageType.System
            };

            MessageController test = new MessageController();

            test.SendMessage(cancelMessage);

            db.FavorTradeModels.Remove(favorTradeModel);

            db.SaveChanges();

            return(RedirectToAction("Profile", "Profile"));
        }
        public ActionResult AcceptTrade(int?id)
        {
            if (!ParamsAreValid(id))
            {
                return(RedirectToAction("Profile", "Profile"));
            }

            var db = new FavorDbContext();

            var favorTradeModel = db.FavorTradeModels.Find(id);
            var fullFavor       = db.Favors.Find(favorTradeModel.FavorId);

            if (!ParamsAreValid(favorTradeModel, fullFavor))
            {
                return(RedirectToAction("Profile", "Profile"));
            }

            var receiverUser = db.Users.Include(u => u.PendingFavors).Include(u => u.AccomplishedFavors).FirstOrDefault(u => u.Id == favorTradeModel.RecieverId);
            var senderUser   = db.Users.Include(u => u.SentFavors).Include(u => u.AccomplishedFavors).FirstOrDefault(u => u.Id == favorTradeModel.SenderId);

            var accomplishedTradeModelForTheReceiver = new AccomplishedTradeModel
            {
                FavorTitle       = favorTradeModel.FavorTitle,
                FavorContent     = favorTradeModel.FavorContent,
                TradeOff         = favorTradeModel.TradeOff,
                SenderId         = favorTradeModel.SenderId,
                SenderFullName   = favorTradeModel.SenderFullName,
                ReceiverId       = favorTradeModel.RecieverId,
                ReceiverFullName = favorTradeModel.RecieverFullName
            };

            var accomplishedTradeForTheSender = AccomplishedTradeModel.ToAccomplishedTradeModel(accomplishedTradeModelForTheReceiver);

            if (!ParamsAreValid(receiverUser, senderUser))
            {
                return(RedirectToAction("Profile", "Profile"));
            }

            List <FavorTradeModel> allFavorTradeModels = db.FavorTradeModels
                                                         .Where(ftm => ftm.FavorId == favorTradeModel.FavorId &&
                                                                ftm.SenderId != favorTradeModel.SenderId)
                                                         .ToList();

            MessageController test = new MessageController();

            for (int currFavorTradeModel = 0; currFavorTradeModel < allFavorTradeModels.Count; currFavorTradeModel++)
            {
                var user = db.Users.Find(allFavorTradeModels[currFavorTradeModel].RecieverId);

                Message cancelMessage = new Message
                {
                    ReceiverId  = allFavorTradeModels[currFavorTradeModel].SenderId,
                    SenderEmail = user.Email,
                    Title       = favorTradeModel.FavorTitle,
                    Content     = "The trade favor with this title was canceled",
                    Type        = MessageType.System
                };

                test.SendMessage(cancelMessage);

                db.FavorTradeModels.Remove(allFavorTradeModels[currFavorTradeModel]);
            }

            receiverUser.AccomplishedFavors.Add(accomplishedTradeModelForTheReceiver);
            senderUser.AccomplishedFavors.Add(accomplishedTradeForTheSender);

            Message successMessage = new Message
            {
                ReceiverId  = receiverUser.Id,
                SenderEmail = senderUser.Email,
                Title       = accomplishedTradeForTheSender.FavorTitle,
                Content     = "The trade favor with this title was accepted!!!",
                Type        = MessageType.System
            };

            test.SendMessage(successMessage);

            allFavorTradeModels = db.FavorTradeModels
                                  .Where(ftm => ftm.FavorId == favorTradeModel.FavorId)
                                  .ToList();

            for (int currFavorTradeModel = 0; currFavorTradeModel < allFavorTradeModels.Count; currFavorTradeModel++)
            {
                db.FavorTradeModels.Remove(allFavorTradeModels[currFavorTradeModel]);
            }

            db.Favors.Remove(fullFavor);

            db.SaveChanges();

            return(RedirectToAction("Profile", "Profile"));
        }