128 lines
3.3 KiB
C#
Raw Normal View History

2024-03-30 14:49:59 +04:00
using HotelContracts.BindingModels;
using HotelContracts.BusinessLogicsContracts;
using HotelContracts.SearchModels;
using HotelContracts.ViewModels;
using Microsoft.AspNetCore.Mvc;
namespace HotelRestApi.Controllers
{
[Route("api/[controller]/[action]")]
[ApiController]
public class RoomController : Controller
{
private readonly ILogger _logger;
private readonly IRoomLogic _room;
public RoomController(ILogger<ConferenceBookingController> logger, IRoomLogic room)
{
_logger = logger;
_room = room;
}
[HttpGet]
public List<RoomViewModel>? GetRoomList(int headwaiterId)
{
try
{
return _room.ReadList(new RoomSearchModel
{
HeadwaiterId = headwaiterId,
});
}
catch (Exception ex)
{
_logger.LogError(ex, "Ошибка получения списка номеров");
throw;
}
}
[HttpGet]
public List<RoomViewModel>? GetRooms()
{
try
{
return _room.ReadList(null);
}
catch (Exception ex)
{
_logger.LogError(ex, "Ошибка получения списка номеров");
throw;
}
}
[HttpGet]
public RoomViewModel? GetRoomById(int roomId)
{
try
{
return _room.ReadElement(new RoomSearchModel
{
Id = roomId
});
}
catch (Exception ex)
{
_logger.LogError(ex, "Ошибка получения номера по id={Id}", roomId);
throw;
}
}
[HttpPost]
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;
}
}
[HttpPost]
public void AddLunchToRoom(Tuple<RoomSearchModel, LunchViewModel> model)
{
try
{
_room.AddLunchToRoom(model.Item1, model.Item2);
}
catch (Exception ex)
{
_logger.LogError(ex, "Ошибка добавления обеда к номеру.");
throw;
}
}
}
}