Exemple #1
0
        public IActionResult Vote([FromBody] VoteViewModel model)
        {
            Project ProjectToSearch = db.Projects.Where(x => x.Id.ToString() == model.ProjectId).Include(x => x.Forum).FirstOrDefault();

            if (ProjectToSearch is null)
            {
                return(BadRequest(Message.GetMessage("Aquest projecte no existeix.")));
            }

            Forum ForumToSearch = ProjectToSearch.Forum;

            if (ForumToSearch is null)
            {
                return(BadRequest(Message.GetMessage("Aquest projecte no esta inscrit a cap forum per poder votar-lo.")));
            }

            User user = userGetter.GetUser();

            if (user is null)
            {
                return(BadRequest(Message.GetMessage("T'has de loguejar per poder votar.")));
            }

            Wallet WalletToSearch = db.Wallets.Where(x => x.ForumId == ForumToSearch.Id && x.UserId == user.Id).FirstOrDefault();

            if (WalletToSearch is null)
            {
                return(BadRequest(Message.GetMessage("El usuari no participa en el forum per podar votar en el projecte.")));
            }

            BillOption BillToSearch = db.BillOptions.Where(x => x.Value == int.Parse(model.Value) && x.WalletId == WalletToSearch.Id).FirstOrDefault();

            if (BillToSearch is null)
            {
                return(BadRequest(Message.GetMessage("El usuari no te aquesta opció de vot.")));
            }

            /*if (ForumToSearch.DateBeginsVote.Date >= DateTime.Now.Date && DateTime.Now.Date <= ForumToSearch.DateEndsVote.Date)
             * {*/
            Vote vote = new Vote
            {
                ImgUri  = BillToSearch.ImgUri,
                Name    = BillToSearch.Name,
                Value   = BillToSearch.Value,
                Project = ProjectToSearch
            };

            ProjectToSearch.TotalMoney += vote.Value;

            db.Remove(BillToSearch);
            db.Votes.Add(vote);
            db.Projects.Update(ProjectToSearch);
            db.SaveChanges();

            return(new JsonResult(Message.GetMessage("El vot s'ha realitzat correctament.")));

            //}
            return(BadRequest(Message.GetMessage("No s'ha pogut realitzar el vot perquè la data actual no està dintre del termini de vot del Forum.")));
        }
        private void AddBillOptions(Forum forum, Wallet wallet)
        {
            List <Transaction> Transactions = db.Transactions.Where(x => x.ForumId == forum.Id).ToList();

            foreach (Transaction transaction in Transactions)
            {
                BillOption option = new BillOption
                {
                    Name   = transaction.Name,
                    Value  = transaction.Value,
                    Wallet = wallet
                };
                db.BillOptions.Add(option);
            }
            db.SaveChanges();
        }