public async Task <IActionResult> Create(LabThingCreateViewModel ltViewModel) { //The Employee and EmployeeID fields must be disregarded in order to determine if the model state is valid ModelState.Remove("LabThing.Employee"); ModelState.Remove("LabThing.EmployeeId"); //The user is instead obtained by the current authorized user var user = await GetCurrentUserAsync(); if (ModelState.IsValid) { //The Employee Id is declaired using the async method above and established once model state is determined ltViewModel.LabThing.Employee = user; _context.Add(ltViewModel.LabThing); await _context.SaveChangesAsync(); //The routing occurs here instead of in the view because the LabThing id must be created before the redirect occurs return(RedirectToAction("Index")); } //---------------------------------------------------------------------------------------------------- //NOTE: Category dropdown: //Get category data from the database var CategoryData = _context.Categories; List <SelectListItem> CategoriesList = new List <SelectListItem>(); //Include the select option in the category list CategoriesList.Insert(0, new SelectListItem { Text = "Select", Value = "" }); foreach (var cat in CategoryData) { SelectListItem categoriesList = new SelectListItem { Value = cat.ID.ToString(), Text = cat.Name }; CategoriesList.Add(categoriesList); } ; ltViewModel.Category = CategoriesList; //---------------------------------------------------------------------------------------------------- //NOTE: Manufacturer dropdown: var ManufacturerData = _context.Manufacturers; List <SelectListItem> ManufacturersList = new List <SelectListItem>(); //Include the select option in the manufacturer list ManufacturersList.Insert(0, new SelectListItem { Text = "Select", Value = "" }); foreach (var m in ManufacturerData) { SelectListItem manufacturersList = new SelectListItem { Value = m.ID.ToString(), Text = m.Name }; ManufacturersList.Add(manufacturersList); } ; ltViewModel.Manufacturer = ManufacturersList; //---------------------------------------------------------------------------------------------------- //NOTE: Employee dropdown: var EmployeeData = _context.Employees; List <SelectListItem> EmployeesList = new List <SelectListItem>(); //Include the select option in the employee list EmployeesList.Insert(0, new SelectListItem { Text = "Select", Value = "" }); foreach (var e in EmployeeData) { SelectListItem employeesList = new SelectListItem { Value = e.Id.ToString(), Text = e.FirstName }; EmployeesList.Add(employeesList); } ; ltViewModel.Employee = EmployeesList; //---------------------------------------------------------------------------------------------------- return(View(ltViewModel)); }
//======================================================================================== //GET: LabThings/Create public IActionResult Create() { //------------------------------------------------------------------------------------------------------- //NOTE: Categories Dropdown: //NOTE: The variable labThingCreateViewModel is used at the end of all navigation properties to add the nav prop to the view model: LabThingCreateViewModel labThingCreateViewModel = new LabThingCreateViewModel(); // NOTE: Gets Categories with the LabThing and creates a list var CategoryData = _context.Categories; List <SelectListItem> CategoriesList = new List <SelectListItem>(); //NOTE: Adds an empty list item at the first position in the list as a placeholder: CategoriesList.Insert(0, new SelectListItem { Text = "Select", Value = "" }); //NOTE: Loops through each item in the list, stores it in categoryItem, and adds it to the categories list created above. foreach (var cat in CategoryData) { SelectListItem categoryItem = new SelectListItem { Value = cat.ID.ToString(), Text = cat.Name }; CategoriesList.Add(categoryItem); } ; labThingCreateViewModel.Category = CategoriesList; //------------------------------------------------------------------------------------------------------- //NOTE: Manufacturers Dropdown: var ManufacturerData = _context.Manufacturers; List <SelectListItem> ManufacturersList = new List <SelectListItem>(); ManufacturersList.Insert(0, new SelectListItem { Text = "Select", Value = "" }); foreach (var m in ManufacturerData) { SelectListItem manufacturerItem = new SelectListItem { Value = m.ID.ToString(), Text = m.Name }; ManufacturersList.Add(manufacturerItem); } labThingCreateViewModel.Manufacturer = ManufacturersList; //------------------------------------------------------------------------------------------------------------- //NOTE: Employee Dropdown: var EmployeeData = _context.Employees; List <SelectListItem> EmployeesList = new List <SelectListItem>(); EmployeesList.Insert(0, new SelectListItem { Text = "Select", Value = "" }); foreach (var e in EmployeeData) { SelectListItem employeeItem = new SelectListItem { Value = e.Id.ToString(), Text = e.FirstName }; EmployeesList.Add(employeeItem); } labThingCreateViewModel.Employee = EmployeesList; return(View(labThingCreateViewModel)); }