111 lines
3.4 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|