using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.Rendering; using Microsoft.EntityFrameworkCore; using WhiteLagoon.Application.Common.Interfaces; using WhiteLagoon.Application.Services.Interface; using WhiteLagoon.Domain.Entities; using WhiteLagoon.Infrastructure.Data; using WhiteLagoon.Web.ViewModels; namespace WhiteLagoon.Web.Controllers { public class VillaNumberController : Controller { private readonly IVillaNumberService _villaNumberService; private readonly IVillaService _villaService; public VillaNumberController(IVillaNumberService villaNumberService, IVillaService villaService) { _villaService = villaService; _villaNumberService = villaNumberService; } public IActionResult Index() { var villaNumbers = _villaNumberService.GetAllVillaNumbers(); return View(villaNumbers); } public IActionResult Create() { VillaNumberVM villaNumberVM = new() { VillaList = _villaService.GetAllVillas().Select(u => new SelectListItem { Text = u.Name, Value = u.Id.ToString() }) }; return View(villaNumberVM); } [HttpPost] public IActionResult Create(VillaNumberVM obj) { //ModelState.Remove("Villa"); bool roomNumberExists = _villaNumberService.CheckVillaNumberExists(obj.VillaNumber.Villa_Number); if (ModelState.IsValid && !roomNumberExists) { _villaNumberService.CreateVillaNumber(obj.VillaNumber); TempData["success"] = "The villa Number has been created successfully."; return RedirectToAction(nameof(Index)); } if (roomNumberExists) { TempData["error"] = "The villa Number already exists."; } obj.VillaList = _villaService.GetAllVillas().Select(u => new SelectListItem { Text = u.Name, Value = u.Id.ToString() }); return View(obj); } public IActionResult Update(int villaNumberId) { VillaNumberVM villaNumberVM = new() { VillaList = _villaService.GetAllVillas().Select(u => new SelectListItem { Text = u.Name, Value = u.Id.ToString() }), VillaNumber = _villaNumberService.GetVillaNumberById(villaNumberId) }; if (villaNumberVM.VillaNumber == null) { return RedirectToAction("Error", "Home"); } return View(villaNumberVM); } [HttpPost] public IActionResult Update(VillaNumberVM villaNumberVM) { if (ModelState.IsValid) { _villaNumberService.UpdateVillaNumber(villaNumberVM.VillaNumber); TempData["success"] = "The villa Number has been updated successfully."; return RedirectToAction(nameof(Index)); } villaNumberVM.VillaList = _villaService.GetAllVillas().Select(u => new SelectListItem { Text = u.Name, Value = u.Id.ToString() }); return View(villaNumberVM); } public IActionResult Delete(int villaNumberId) { VillaNumberVM villaNumberVM = new() { VillaList = _villaService.GetAllVillas().Select(u => new SelectListItem { Text = u.Name, Value = u.Id.ToString() }), VillaNumber = _villaNumberService.GetVillaNumberById(villaNumberId) }; if (villaNumberVM.VillaNumber == null) { return RedirectToAction("Error", "Home"); } return View(villaNumberVM); } [HttpPost] public IActionResult Delete(VillaNumberVM villaNumberVM) { VillaNumber? objFromDb = _villaNumberService.GetVillaNumberById(villaNumberVM.VillaNumber.Villa_Number); if (objFromDb is not null) { _villaNumberService.DeleteVillaNumber(objFromDb.Villa_Number); TempData["success"] = "The villa number has been deleted successfully."; return RedirectToAction(nameof(Index)); } TempData["error"] = "The villa number could not be deleted."; return View(); } } }