2026-07-23 13:54:06 -07:00

111 lines
3.4 KiB
C#

namespace qtc_api.Services.RoomService
{
public class RoomService : IRoomService
{
private readonly DataContext _dataContext;
private long idMax = 900000000000000000;
public RoomService(DataContext dataContext)
{
_dataContext = dataContext;
}
public async Task<ServiceResponse<Room>> AddRoom(string userId, RoomDto room)
{
var serviceResponse = new ServiceResponse<Room>();
var roomList = await _dataContext.Rooms.ToListAsync();
var roomToAdd = new Room();
Random rnd = new Random();
roomToAdd.Id = LongRandom(1, idMax, rnd).ToString();
roomToAdd.Name = room.Name;
roomToAdd.CreatorId = userId;
roomToAdd.CreatedAt = DateTime.UtcNow;
var cRoom = await _dataContext.Rooms.FirstOrDefaultAsync(x => x.Name == roomToAdd.Name);
if (cRoom == null)
{
await _dataContext.Rooms.AddAsync(roomToAdd);
await _dataContext.SaveChangesAsync();
serviceResponse.Success = true;
serviceResponse.Data = roomToAdd;
}
else
{
serviceResponse.Success = false;
serviceResponse.Message = "Room already exists.";
}
return serviceResponse;
}
public async Task<ServiceResponse<Room>> DeleteRoom(string id)
{
var serviceResponse = new ServiceResponse<Room>();
var room = await _dataContext.Rooms.FirstOrDefaultAsync(x => x.Id == id);
if (room != null)
{
_dataContext.Rooms.Remove(room);
await _dataContext.SaveChangesAsync();
serviceResponse.Success = true;
serviceResponse.Data = room;
}
else
{
serviceResponse.Success = false;
serviceResponse.Message = "Room not found.";
}
return serviceResponse;
}
public async Task<ServiceResponse<List<Room>>> GetAllRooms()
{
var serviceResponse = new ServiceResponse<List<Room>>();
var rooms = await _dataContext.Rooms.ToListAsync();
serviceResponse.Success = true;
serviceResponse.Data = rooms;
return serviceResponse;
}
public async Task<ServiceResponse<Room>> GetRoom(string id)
{
var serviceResponse = new ServiceResponse<Room>();
var room = await _dataContext.Rooms.FirstOrDefaultAsync(x => x.Id == id);
if (room != null)
{
serviceResponse.Success = true;
serviceResponse.Data = room;
}
else
{
serviceResponse.Success = false;
serviceResponse.Message = "Room not found.";
}
return serviceResponse;
}
public Task<ServiceResponse<Room>> UpdateRoom(Room room)
{
throw new NotImplementedException();
}
private long LongRandom(long min, long max, Random rnd)
{
long result = rnd.Next((int)(min >> 32), (int)(max >> 32));
result = result << 32;
result = result | (long)rnd.Next((int)min, (int)max);
return result;
}
}
}