public async Task <IActionResult> OnPostDogCreate([FromForm] int?id, [FromForm] string name, [FromForm] string breed, [FromForm] DateTime birthday, [FromForm] string gender, [FromForm] string note, [FromForm] int?course) { // Get user from session var user = await HttpContext.Session.GetUser(); // Redirect to login page if user is invalid or user is a customer if (user?.Admin_permission != true || id == null) { return(RedirectToPage("/Index")); } // Check if customer to add dog to is valid var customer = await UserRepository.GetUser(id); if (customer == null) { return(RedirectToPage("/Index")); } // Parse input gender to enum, or return if it failed if (!Enum.TryParse <Gender>(gender, true, out var value)) { return(RedirectToPage("/Index")); } // Create dog instance based on input var dog = new Dog { User_ID = (int)id, Name = name, Breed = breed, Date_of_birth = birthday, Date_of_death = null, Gender = value, Note = note }; // Save newly created dog in database and return if course wasn't specified await DogRepository.Save(dog); if (course == null) { return(await OnGetAsync(id)); } // Enroll the inserted dog into the requested course var dogId = await DogRepository.GetDogId(dog); await CourseRepository.Enroll(dogId, course); return(await OnGetAsync(id)); }