2024-03-30 14:49:59 +04:00
|
|
|
|
using HotelContracts.BindingModels;
|
|
|
|
|
using HotelContracts.BusinessLogicsContracts;
|
|
|
|
|
using HotelContracts.SearchModels;
|
|
|
|
|
using HotelContracts.ViewModels;
|
2024-04-30 18:09:55 +04:00
|
|
|
|
using HotelDataBaseImplement.Models;
|
2024-03-30 14:49:59 +04:00
|
|
|
|
using Microsoft.AspNetCore.Mvc;
|
|
|
|
|
|
|
|
|
|
namespace HotelRestApi.Controllers
|
|
|
|
|
{
|
|
|
|
|
[Route("api/[controller]/[action]")]
|
|
|
|
|
[ApiController]
|
|
|
|
|
public class RoomController : Controller
|
|
|
|
|
{
|
|
|
|
|
private readonly ILogger _logger;
|
|
|
|
|
private readonly IRoomLogic _room;
|
|
|
|
|
|
2024-03-31 11:37:27 +04:00
|
|
|
|
public RoomController(ILogger<RoomController> logger, IRoomLogic room)
|
2024-03-30 14:49:59 +04:00
|
|
|
|
{
|
|
|
|
|
_logger = logger;
|
|
|
|
|
_room = room;
|
|
|
|
|
}
|
|
|
|
|
|
2024-04-30 18:09:55 +04:00
|
|
|
|
[HttpGet]
|
|
|
|
|
public List<RoomViewModel> GetRooms(int? headwaiterId = null)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
List<RoomViewModel> res;
|
|
|
|
|
if (!headwaiterId.HasValue)
|
2024-03-30 14:49:59 +04:00
|
|
|
|
{
|
2024-04-30 18:09:55 +04:00
|
|
|
|
res = _room.ReadList(null);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
res = _room.ReadList(new RoomSearchModel { HeadwaiterId = headwaiterId });
|
|
|
|
|
}
|
|
|
|
|
foreach (var service in res)
|
|
|
|
|
{
|
|
|
|
|
service.RoomLunches = null;
|
|
|
|
|
}
|
|
|
|
|
return res;
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
_logger.LogError(ex, "Ошибка получения списка номеров");
|
|
|
|
|
throw;
|
|
|
|
|
}
|
|
|
|
|
}
|
2024-03-30 14:49:59 +04:00
|
|
|
|
|
2024-04-30 18:09:55 +04:00
|
|
|
|
[HttpGet]
|
|
|
|
|
public Tuple<RoomViewModel, List<string>>? GetRoom(int roomId)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
var elem = _room.ReadElement(new RoomSearchModel { Id = roomId });
|
|
|
|
|
if (elem == null)
|
2024-03-30 14:49:59 +04:00
|
|
|
|
{
|
2024-04-30 18:09:55 +04:00
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
var res = Tuple.Create(elem, elem.RoomLunches.Select(x => x.Value.LunchName).ToList());
|
|
|
|
|
res.Item1.RoomLunches = null!;
|
|
|
|
|
return res;
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
_logger.LogError(ex, "Ошибка получения номера по id={Id}", roomId);
|
|
|
|
|
throw;
|
|
|
|
|
}
|
|
|
|
|
}
|
2024-03-30 14:49:59 +04:00
|
|
|
|
|
2024-04-30 18:09:55 +04:00
|
|
|
|
[HttpPost]
|
2024-03-30 14:49:59 +04:00
|
|
|
|
public void CreateRoom(RoomBindingModel model)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
_room.Create(model);
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
_logger.LogError(ex, "Ошибка создания номера");
|
|
|
|
|
throw;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[HttpPost]
|
|
|
|
|
public void UpdateRoom(RoomBindingModel model)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
model.RoomLunches = null!;
|
|
|
|
|
_room.Update(model);
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
_logger.LogError(ex, "Ошибка обновления данных номера");
|
|
|
|
|
throw;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[HttpPost]
|
|
|
|
|
public void DeleteRoom(RoomBindingModel model)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
_room.Delete(model);
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
_logger.LogError(ex, "Ошибка удаления номера");
|
|
|
|
|
throw;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|