128 lines
3.3 KiB
C#
128 lines
3.3 KiB
C#
|
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;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|