public async Task <IActionResult> Create([Bind("DonationID,DateOfDonation,UsersFK")] DonationIndexViewModel donationIVM)
        {
            if (!GetAuthorization(5, 'c'))
            {
                return(NotFound());
            }
            ViewBag.Permission = getPermissions();
            if (!checkValues(donationIVM))
            {
                return(Redirect(nameof(Create)));
            }

            if (ModelState.IsValid)
            {
                string   selected     = Request.Form["checkProduct"].ToString();
                string[] selectedList = selected.Split(',');
                Donation donation     = new Donation
                {
                    DateOfDonation = donationIVM.DateOfDonation,
                    UsersFK        = donationIVM.UsersFK
                };
                _context.Add(donation);
                _context.SaveChanges();

                if (selectedList[0] != "")
                {
                    foreach (var temp in selectedList)
                    {
                        int prodKey  = Convert.ToInt32(temp);
                        int newQuant = 0;
                        if (Request.Form["quantityProduct " + Convert.ToInt32(temp)] != "")
                        {
                            newQuant = Convert.ToInt32(Request.Form["quantityProduct " + Convert.ToInt32(temp)].ToString());
                        }
                        DonationProduct donationProduct = new DonationProduct
                        {
                            DonationFK = donation.DonationID,
                            ProductFK  = prodKey,
                            Quantity   = newQuant
                        };
                        var prod = new Product
                        {
                            ProductID = prodKey
                        };
                        prod.Quantity = _context.Products.Where(e => e.ProductID == prodKey).FirstOrDefault().Quantity + newQuant;
                        _context.Entry(prod).Property("Quantity").IsModified = true;
                        _context.SaveChanges();
                        _context.Add(donationProduct);
                    }
                }

                await _context.SaveChangesAsync();

                TempData["Message"] = "Doacao criada com sucesso!";
                return(RedirectToAction(nameof(Index)));
            }
            return(View(donationIVM));
        }
 private bool checkValues(DonationIndexViewModel donation)
 {
     if (donation.DateOfDonation == DateTime.MinValue)
     {
         TempData["Message"] = "Escolha uma data para a doação!";
         return(false);
     }
     if (donation.UsersFK <= 0)
     {
         TempData["Message"] = "Escolha uma cliente para a doação!";
         return(false);
     }
     return(true);
 }
Example #3
0
        // GET: Donations
        public async Task <IActionResult> Index()
        {
            DonationIndexViewModel viewModel = new DonationIndexViewModel();
            var user = await GetCurrentUserAsync();

            // if there is nobody logged in
            if (user == null)
            {
                return(View("../Home/LoginError"));
            }
            // if the user is an employee
            else if (user.UserTypeId == 2)
            {
                var allDonations = _context.Donations
                                   .Include(d => d.Status)
                                   .Include(d => d.Items)
                                   .Include(d => d.ApplicationUser)
                                   .ToList();

                viewModel.Donations = allDonations;
                return(View(viewModel));
            }
            // if the user is a customer
            else if (user.UserTypeId == 4)
            {
                var allItems = _context.Items
                               .Include(i => i.ItemType)
                               .Include(i => i.Donation)
                               .Include(i => i.ApplicationUser)
                               .Where(i => i.ApplicationUserId == user.Id);

                List <Donation> allDonations = _context.Donations
                                               .Include(d => d.Status)
                                               .ToList();

                var donations = new HashSet <Donation>();
                foreach (var item in allItems)
                {
                    donations.Add(item.Donation);
                }
                viewModel.CustDonations = donations;

                return(View(viewModel));
            }
            return(View("../Home/LoginError"));
        }
        public async Task <IActionResult> Edit(int id, [Bind("DonationID,DateOfDonation,UsersFK")] DonationIndexViewModel donationIVM)
        {
            /*if (id != donationIVM.EditDonation.DonationID)
             * {
             *  return NotFound();
             * }*/
            if (!GetAuthorization(5, 'u'))
            {
                return(NotFound());
            }
            ViewBag.Permission = getPermissions();
            if (!checkValues(donationIVM))
            {
                return(Redirect(nameof(Edit)));
            }

            if (ModelState.IsValid)
            {
                try
                {
                    string   selected     = Request.Form["checkProduct"].ToString();
                    string[] selectedList = selected.Split(',');

                    Donation toEdit = _context.Donation.FirstOrDefault(e => e.DonationID == id);
                    toEdit.DateOfDonation = donationIVM.DateOfDonation;
                    toEdit.UsersFK        = donationIVM.UsersFK;
                    _context.Update(toEdit);
                    _context.SaveChanges();

                    var x           = 0;
                    var allToRemove = _context.DonationProduct.Where(p => p.DonationFK == id);

                    foreach (DonationProduct don in allToRemove)
                    {
                        var result3 = _context.Products.SingleOrDefault(p => p.ProductID == don.ProductFK);

                        if (result3 != null)
                        {
                            result3.Quantity -= don.Quantity;
                            _context.DonationProduct.Remove(don);
                        }
                    }

                    if (selectedList[0] != "")
                    {
                        foreach (var temp in selectedList)
                        {
                            int prodKey  = Convert.ToInt32(temp);
                            int newQuant = 0;
                            if (Request.Form["quantityProduct " + Convert.ToInt32(temp)] != "")
                            {
                                newQuant = Convert.ToInt32(Request.Form["quantityProduct " + Convert.ToInt32(temp)].ToString());
                            }
                            DonationProduct donationProduct = new DonationProduct
                            {
                                DonationFK = id,
                                ProductFK  = prodKey,
                                Quantity   = newQuant
                            };
                            x++;
                            var quantityToRemove = allToRemove.Where(p => p.ProductFK == prodKey && p.DonationFK == id).ToList();
                            var result           = _context.Products.SingleOrDefault(p => p.ProductID == prodKey);
                            if (result != null)
                            {
                                result.Quantity += newQuant;
                                _context.SaveChanges();
                            }

                            _context.SaveChanges();
                            _context.Add(donationProduct);
                        }
                    }
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!DonationExists(donationIVM.EditDonation.DonationID))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                TempData["Message"] = "Doacao editada com sucesso!";
                return(RedirectToAction(nameof(Index)));
            }
            return(View(donationIVM));
        }
        // GET: Donations/Edit/5
        public async Task <IActionResult> Edit(int?id, string searchString, string animalType, string productType)
        {
            if (!GetAuthorization(5, 'u'))
            {
                return(NotFound());
            }
            ViewBag.Permission = getPermissions();
            if (id == null)
            {
                return(NotFound());
            }

            var donation = await _context.Donation.FindAsync(id);

            if (donation == null)
            {
                return(NotFound());
            }

            /**
             * Produtos
             */
            var query = from product in _context.Products
                        join productsType in _context.ProductTypes on product.ProductTypeFK equals productsType.ProductTypeID
                        join animalsType in _context.AnimalTypes on product.AnimalTypeFK equals animalsType.AnimalTypeID
                        select new
            {
                ProductID       = product.ProductID,
                Name            = product.Name,
                Quantity        = product.Quantity,
                AnimalTypeFK    = product.AnimalTypeFK,
                ProductTypeFK   = product.ProductTypeFK,
                ProductTypeName = productsType.Name,
                AnimaltypeName  = animalsType.Name
            };

            if (!String.IsNullOrEmpty(searchString))
            {
                query = query.Where(product => product.Name.Contains(searchString));
            }

            if (!String.IsNullOrEmpty(animalType))
            {
                query = query.Where(product => product.AnimaltypeName.Contains(animalType));
            }

            if (!String.IsNullOrEmpty(productType))
            {
                query = query.Where(product => product.ProductTypeName.Contains(productType));
            }

            var result = query.ToList().Select(e => new Product
            {
                ProductID       = e.ProductID,
                Name            = e.Name,
                Quantity        = e.Quantity,
                ProductTypeName = e.ProductTypeName,
                AnimaltypeName  = e.AnimaltypeName
            }).ToList();


            var animalTypeQuery = from animal in _context.AnimalTypes
                                  orderby animal.Name
                                  select animal.Name;

            var productTypeQuery = from product in _context.ProductTypes
                                   orderby product.Name
                                   select product.Name;

            /**
             *
             */
            var queryDonationProducts = _context.DonationProduct.Where(e => e.DonationFK == id);

            var donationProducts = queryDonationProducts.ToList();
            var donationIndexVM  = new DonationIndexViewModel
            {
                Products         = result,
                DateOfDonation   = donation.DateOfDonation,
                UsersFK          = donation.UsersFK,
                AnimalTypes      = new SelectList(animalTypeQuery.Distinct().ToList()),
                ProductTypes     = new SelectList(productTypeQuery.Distinct().ToList()),
                DonationProducts = donationProducts
            };
            string date31string = donationIndexVM.DateOfDonation.ToString("yyyy/MM/dd");

            donationIndexVM.DateOfDonation = DateTime.ParseExact(date31string, "yyyy/MM/dd", null);
            ViewBag.UsersFK = _context.Users.AsParallel();
            return(View(donationIndexVM));
        }
        // GET: Donations
        public async Task <IActionResult> Index(string searchString, string animalType, string productType, string clientString, DateTime dateString)
        {
            if (!GetAuthorization(5, 'r'))
            {
                return(NotFound());
            }
            ViewBag.Permission = getPermissions();
            var donationUserQuery = from donation in _context.Donation
                                    join user in _context.Users on donation.UsersFK equals user.UserID
                                    select new
            {
                DonationID     = donation.DonationID,
                DateOfDonation = donation.DateOfDonation,
                UsersFK        = donation.UsersFK,
                UsersName      = user.Name
            };

            if (!String.IsNullOrEmpty(clientString))
            {
                donationUserQuery = donationUserQuery.Where(don => don.UsersName.Contains(clientString));
            }
            if (dateString != DateTime.MinValue)
            {
                donationUserQuery = donationUserQuery.Where(don => don.DateOfDonation.Day.Equals(dateString.Day) &&
                                                            don.DateOfDonation.Month.Equals(dateString.Month) && don.DateOfDonation.Year.Equals(dateString.Year));
            }

            /*if (!String.IsNullOrEmpty(searchString))
             * {
             *  query = query.Where(product => product.Name.Contains(searchString));
             * }
             *
             * if (!String.IsNullOrEmpty(animalType))
             * {
             *  query = query.Where(product => product.AnimaltypeName.Contains(animalType));
             * }
             *
             * if (!String.IsNullOrEmpty(productType))
             * {
             *  query = query.Where(product => product.ProductTypeName.Contains(productType));
             * }*/
            var result = donationUserQuery.ToList().Select(e => new Donation
            {
                DonationID     = e.DonationID,
                DateOfDonation = e.DateOfDonation,
                UsersFK        = e.UsersFK,
                UsersName      = e.UsersName
            }).ToList();

            foreach (Donation don in result)
            {
                var productsQuery = from donationProduct in _context.DonationProduct
                                    join product in _context.Products on donationProduct.ProductFK equals product.ProductID
                                    select new
                {
                    DonationID  = donationProduct.DonationFK,
                    ProductID   = donationProduct.ProductFK,
                    ProductName = product.Name,
                    Quantity    = donationProduct.Quantity
                };
                var    getAll = productsQuery.ToList().Where(p => p.DonationID == don.DonationID).Select(e => "" + e.ProductName + " - " + e.Quantity);
                String phrase = "";
                foreach (String s in getAll)
                {
                    phrase += s;
                    if (s != getAll.Last())
                    {
                        phrase += " , ";
                    }
                }
                don.ProductName = phrase;
            }

            var animalTypeQuery = from animal in _context.AnimalTypes
                                  orderby animal.Name
                                  select animal.Name;

            var productTypeQuery = from product in _context.ProductTypes
                                   orderby product.Name
                                   select product.Name;
            var usersNameQuery = from user in _context.Users
                                 orderby user.Name
                                 select user.Name;
            DonationIndexViewModel donationIVM = new DonationIndexViewModel
            {
                Donation     = result,
                AnimalTypes  = new SelectList(animalTypeQuery.Distinct().ToList()),
                ProductTypes = new SelectList(productTypeQuery.Distinct().ToList()),
                UsersNames   = new SelectList(usersNameQuery.Distinct().ToList())
            };

            return(View(donationIVM));
        }
        // GET: Donations/Create
        public IActionResult Create(string searchString, string animalType, string productType)
        {
            if (!GetAuthorization(5, 'c'))
            {
                return(NotFound());
            }
            ViewBag.Permission = getPermissions();
            List <Product> selectedProducts = new List <Product>();

            if (ViewBag.selectedProducts != null)
            {
                List <Product> savedProducts = ViewBag.selectedProducts;
                if (savedProducts.Count > 0)
                {
                    selectedProducts = savedProducts;
                }
            }
            if (Request.HasFormContentType && Request.Form != null && Request.Form.Count() > 0)
            {
                string   selected     = Request.Form["checkProduct"].ToString();
                string[] selectedList = selected.Split(',');

                foreach (var temp in selectedList)
                {
                    int prodKey  = Convert.ToInt32(temp);
                    int newQuant = Convert.ToInt32(Request.Form["quantityProduct " + Convert.ToInt32(temp)].ToString());

                    selectedProducts.Add(new Product
                    {
                        ProductID     = prodKey,
                        ProductTypeFK = prodKey,
                        Quantity      = newQuant
                    });
                }
            }

            /**
             * Produtos
             */
            var query = from product in _context.Products
                        join productsType in _context.ProductTypes on product.ProductTypeFK equals productsType.ProductTypeID
                        join animalsType in _context.AnimalTypes on product.AnimalTypeFK equals animalsType.AnimalTypeID
                        select new
            {
                ProductID       = product.ProductID,
                Name            = product.Name,
                Quantity        = product.Quantity,
                AnimalTypeFK    = product.AnimalTypeFK,
                ProductTypeFK   = product.ProductTypeFK,
                ProductTypeName = productsType.Name,
                AnimaltypeName  = animalsType.Name
            };

            if (!String.IsNullOrEmpty(searchString))
            {
                query = query.Where(product => product.Name.Contains(searchString));
            }

            if (!String.IsNullOrEmpty(animalType))
            {
                query = query.Where(product => product.AnimaltypeName.Contains(animalType));
            }

            if (!String.IsNullOrEmpty(productType))
            {
                query = query.Where(product => product.ProductTypeName.Contains(productType));
            }

            var result = query.ToList().Select(e => new Product
            {
                ProductID       = e.ProductID,
                Name            = e.Name,
                Quantity        = e.Quantity,
                ProductTypeName = e.ProductTypeName,
                AnimaltypeName  = e.AnimaltypeName
            }).ToList();


            var animalTypeQuery = from animal in _context.AnimalTypes
                                  orderby animal.Name
                                  select animal.Name;

            var productTypeQuery = from product in _context.ProductTypes
                                   orderby product.Name
                                   select product.Name;

            var donationIndexVM = new DonationIndexViewModel
            {
                Products         = result,
                AnimalTypes      = new SelectList(animalTypeQuery.Distinct().ToList()),
                ProductTypes     = new SelectList(productTypeQuery.Distinct().ToList()),
                SelectedProducts = selectedProducts
            };

            /**
             *
             */
            ViewBag.UsersFK          = _context.Users.AsParallel();
            ViewBag.selectedProducts = selectedProducts;
            return(View(donationIndexVM));
        }