예제 #1
0
        // To protect from overposting attacks, please enable the specific properties you want to bind to, for
        // more details see https://aka.ms/RazorPagesCRUD.
        public async Task <IActionResult> OnPostAsync()
        {
            var emptyDrink = new Drink();

            if (await TryUpdateModelAsync <Drink>(
                    emptyDrink,
                    "drink",
                    s => s.DrinkID, s => s.DrinkCategoryID, s => s.Name, s => s.Size))
            {
                _context.Drinks.Add(emptyDrink);
                await _context.SaveChangesAsync();

                return(RedirectToPage("./Index"));
            }

            // Select DrinkCategoryID if TryUpdateModelAsync fails...
            PopulateDrinksDropDownList(_context, emptyDrink.DrinkCategoryID);
            return(Page());


            /*  if (!ModelState.IsValid) //Before updating related Data....
             * {
             *    return Page();
             * }
             *
             * _context.Drinks.Add(Drink);
             * await _context.SaveChangesAsync();
             *
             * return RedirectToPage("./Index");*/
        }
예제 #2
0
        public async Task <IActionResult> OnPostAsync(int?id)
        {
            try
            {
                if (await _context.DrinkCategories.AnyAsync(
                        m => m.DrinkCategoryID == id))
                {
                    // DrinkCategory.rowVersion value is from when the entity was fetched.
                    // If it doesn't match the DB, a DbUpdateConcurrencyException is thrown.
                    _context.DrinkCategories.Remove(DrinkCategory);
                    await _context.SaveChangesAsync();
                }
                return(RedirectToPage("./Index"));
            }
            catch (DbUpdateConcurrencyException)
            {
                return(RedirectToPage("./Delete",
                                      new { concurrencyError = true, id = id }));
            }

            /* if (id == null)
             * {
             *   return NotFound();
             * }
             *
             * DrinkCategory = await _context.DrinkCategories.FindAsync(id);
             *
             * if (DrinkCategory != null)
             * {
             *   _context.DrinkCategories.Remove(DrinkCategory);
             *   await _context.SaveChangesAsync();
             * }
             *
             * return RedirectToPage("./Index");*/
        }
예제 #3
0
        public async Task <IActionResult> OnPostAsync(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            Company company = await _context.Companies
                              .Include(i => i.DrinkAssignments)
                              .SingleAsync(i => i.CompanyID == id);

            if (company == null)
            {
                return(RedirectToPage("./Index"));
            }

            var drinkCategories = await _context.DrinkCategories
                                  .Where(d => d.CompanyID == id)
                                  .ToListAsync();

            drinkCategories.ForEach(d => d.CompanyID = null);
            _context.Companies.Remove(company);
            await _context.SaveChangesAsync();

            /*Company = await _context.Companies.FindAsync(id);
             *
             * if (Company != null)
             * {
             *  _context.Companies.Remove(Company);
             *  await _context.SaveChangesAsync();
             * }*/

            return(RedirectToPage("./Index"));
        }
예제 #4
0
        // To protect from overposting attacks, please enable the specific properties you want to bind to, for
        // more details see https://aka.ms/RazorPagesCRUD.
        public async Task <IActionResult> OnPostAsync()
        {
            /*if (!ModelState.IsValid)
             * {
             *  return Page();
             * }
             *
             * _context.Foods.Add(Food);
             * await _context.SaveChangesAsync();
             *
             * return RedirectToPage("./Index");*/

            var emptyFood = new Food();

            if (await TryUpdateModelAsync <Food> (
                    emptyFood,
                    "food",
                    f => f.Name, f => f.ExpirationDate))
            {
                _context.Foods.Add(emptyFood);
                await _context.SaveChangesAsync();

                return(RedirectToPage("./Index"));
            }

            return(Page());
        }
예제 #5
0
        // To protect from overposting attacks, please enable the specific properties you want to bind to, for
        // more details see https://aka.ms/RazorPagesCRUD.
        public async Task <IActionResult> OnPostAsync(int?id)
        {
            /*if (!ModelState.IsValid) // Before using updated related DATA
             * {
             *  return Page();
             * }
             *
             * _context.Attach(Drink).State = EntityState.Modified;
             *
             * try
             * {
             *  await _context.SaveChangesAsync();
             * }
             * catch (DbUpdateConcurrencyException)
             * {
             *  if (!DrinkExists(Drink.DrinkID))
             *  {
             *      return NotFound();
             *  }
             *  else
             *  {
             *      throw;
             *  }
             * }
             *
             * return RedirectToPage("./Index");*/

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

            var drinkToUpdate = await _context.Drinks.FindAsync(id);

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

            if (await TryUpdateModelAsync <Drink> (
                    drinkToUpdate,
                    "drink",
                    d => d.Size, d => d.DrinkCategoryID, d => d.Name))
            {
                await _context.SaveChangesAsync();

                return(RedirectToPage("./Index"));
            }

            //Select DrinkCategoryID if TryUpdateModelAsync fails.
            PopulateDrinksDropDownList(_context, drinkToUpdate.DrinkCategoryID);
            return(Page());
        }
예제 #6
0
        // To protect from overposting attacks, please enable the specific properties you want to bind to, for
        // more details see https://aka.ms/RazorPagesCRUD.
        public async Task <IActionResult> OnPostAsync()
        {
            if (!ModelState.IsValid)
            {
                return(Page());
            }

            _context.DrinkCategories.Add(DrinkCategory);
            await _context.SaveChangesAsync();

            return(RedirectToPage("./Index"));
        }
예제 #7
0
        // To protect from overposting attacks, please enable the specific properties you want to bind to, for
        // more details see https://aka.ms/RazorPagesCRUD.
        public async Task <IActionResult> OnPostAsync(int id)
        {
            var foodToUpdate = await _context.Foods.FindAsync(id);

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

            if (await TryUpdateModelAsync <Food> (
                    foodToUpdate,
                    "food",
                    f => f.Name, f => f.ExpirationDate))
            {
                await _context.SaveChangesAsync();

                return(RedirectToPage("./Index"));
            }
            return(Page());

            /*
             * if (!ModelState.IsValid)
             * {
             *  return Page();
             * }
             *
             * _context.Attach(Food).State = EntityState.Modified;
             *
             * try
             * {
             *  await _context.SaveChangesAsync();
             * }
             * catch (DbUpdateConcurrencyException)
             * {
             *  if (!FoodExists(Food.FoodID))
             *  {
             *      return NotFound();
             *  }
             *  else
             *  {
             *      throw;
             *  }
             * }
             *
             * return RedirectToPage("./Index");
             */
        }
예제 #8
0
        public async Task <IActionResult> OnPostAsync(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            Drink = await _context.Drinks.FindAsync(id);

            if (Drink != null)
            {
                _context.Drinks.Remove(Drink);
                await _context.SaveChangesAsync();
            }

            return(RedirectToPage("./Index"));
        }
예제 #9
0
        // To protect from overposting attacks, please enable the specific properties you want to bind to, for
        // more details see https://aka.ms/RazorPagesCRUD.
        public async Task <IActionResult> OnPostAsync(string[] selectedDrinks)
        {
            var newCompany = new Company();

            if (selectedDrinks != null)
            {
                newCompany.DrinkAssignments = new List <DrinkAssignment>();
                foreach (var drink in selectedDrinks)
                {
                    var drinkToAdd = new DrinkAssignment
                    {
                        DrinkID = int.Parse(drink)
                    };
                    newCompany.DrinkAssignments.Add(drinkToAdd);
                }
            }

            if (await TryUpdateModelAsync <Company> (
                    newCompany,
                    "Company",
                    i => i.Name,
                    i => i.FoundedDate,
                    i => i.CompanyHQ))
            {
                _context.Companies.Add(newCompany);
                await _context.SaveChangesAsync();

                return(RedirectToPage("./Index"));
            }
            PopulateAssignedDrinkData(_context, newCompany);
            return(Page());

            /* if (!ModelState.IsValid)
             * {
             *   return Page();
             * }
             *
             * _context.Companies.Add(Company);
             * await _context.SaveChangesAsync();
             *
             * return RedirectToPage("./Index");*/
        }
예제 #10
0
        public async Task<IActionResult> OnPostAsync(int? id)
        {
            if (id == null)
            {
                return NotFound();
            }

            var food = await _context.Foods.FindAsync(id);

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

            try
            {
                _context.Foods.Remove(food);
                await _context.SaveChangesAsync();
                return RedirectToPage("./Index");
            }
            catch (DbUpdateException)
            {
                //Log the error(uncomment ex variable name and write a log.)
                return RedirectToAction("./Delete",
                                     new { id, saveChangesError = true });
            }



            /*Food = await _context.Foods.FindAsync(id);

            if (Food != null)
            {
                _context.Foods.Remove(Food);
                await _context.SaveChangesAsync();
            }

            return RedirectToPage("./Index");*/
        }
예제 #11
0
        // To protect from overposting attacks, please enable the specific properties you want to bind to, for
        // more details see https://aka.ms/RazorPagesCRUD.
        public async Task <IActionResult> OnPostAsync(int?id, string[] selectedDrinks)
        {
            if (id == null)
            {
                return(NotFound());
            }

            var companyToUpdate = await _context.Companies
                                  .Include(i => i.CompanyHQ)
                                  .Include(i => i.DrinkAssignments)
                                  .ThenInclude(i => i.Drink)
                                  .FirstOrDefaultAsync(s => s.CompanyID == id);

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

            if (await TryUpdateModelAsync <Company>(
                    companyToUpdate,
                    "Company",
                    i => i.Name,
                    i => i.FoundedDate,
                    i => i.CompanyHQ))
            {
                if (String.IsNullOrWhiteSpace(
                        companyToUpdate.CompanyHQ?.Location))
                {
                    companyToUpdate.CompanyHQ = null;
                }
                UpdateCompanyDrinks(_context, selectedDrinks, companyToUpdate);
                await _context.SaveChangesAsync();

                return(RedirectToPage("./Index"));
            }
            UpdateCompanyDrinks(_context, selectedDrinks, companyToUpdate);
            PopulateAssignedDrinkData(_context, companyToUpdate);
            return(Page());
        }
예제 #12
0
        // To protect from overposting attacks, please enable the specific properties you want to bind to, for
        // more details see https://aka.ms/RazorPagesCRUD.
        public async Task <IActionResult> OnPostAsync(int id)
        {
            if (!ModelState.IsValid)
            {
                return(Page());
            }

            var drinkCategoryToUpdate = await _context.DrinkCategories
                                        .Include(i => i.CompanyHead)
                                        .FirstOrDefaultAsync(m => m.DrinkCategoryID == id);

            if (drinkCategoryToUpdate == null)
            {
                return(HandleDeletedDrinkCategory());
            }

            _context.Entry(drinkCategoryToUpdate)
            .Property("RowVersion")
            .OriginalValue = DrinkCategory.RowVersion;

            if (await TryUpdateModelAsync <DrinkCategory>(
                    drinkCategoryToUpdate,
                    "Drink Category",
                    s => s.Name, s => s.Alcoholic, s => s.MinProductionCost, s => s.CompanyID))
            {
                try
                {
                    await _context.SaveChangesAsync();

                    return(RedirectToPage("./Index"));
                }
                catch (DbUpdateConcurrencyException ex)
                {
                    var exceptionEntry = ex.Entries.Single();
                    var clientValues   = (DrinkCategory)exceptionEntry.Entity;
                    var databaseEntry  = exceptionEntry.GetDatabaseValues();

                    if (databaseEntry == null)
                    {
                        ModelState.AddModelError(string.Empty, "Unable to save. " +
                                                 "The department was deleted by another user.");
                        return(Page());
                    }

                    var dbValues = (DrinkCategory)databaseEntry.ToObject();
                    await setDbErrorMessage(dbValues, clientValues, _context);

                    //Save the current RowVersion so next postback matched unless an new concurrency issue happens.
                    DrinkCategory.RowVersion = (byte[])dbValues.RowVersion;
                    //Clear the model error for the next postback.
                    ModelState.Remove("Department.RowVersion");
                }
            }

            CompanyNameSL = new SelectList(_context.Companies,
                                           "ID", "Name", drinkCategoryToUpdate.CompanyID);

            return(Page());


            /*_context.Attach(DrinkCategory).State = EntityState.Modified; // before Concurrency implementation
             *
             * try
             * {
             *  await _context.SaveChangesAsync();
             * }
             * catch (DbUpdateConcurrencyException)
             * {
             *  if (!DrinkCategoryExists(DrinkCategory.DrinkCategoryID))
             *  {
             *      return NotFound();
             *  }
             *  else
             *  {
             *      throw;
             *  }
             * }
             *
             * return RedirectToPage("./Index");*/
        }