Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

RoomService.cs 2.1KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. using Diligent.WebAPI.Business.MongoServices;
  2. using Diligent.WebAPI.Data;
  3. using Diligent.WebAPI.Data.Entities;
  4. using Diligent.WebAPI.Data.HelperModels;
  5. using Microsoft.Extensions.Options;
  6. using MongoDB.Driver;
  7. namespace Diligent.WebAPI.Business.Services
  8. {
  9. public class RoomService : BaseMongo<Room>
  10. {
  11. public RoomService(IOptions<WebApiDatabaseSettings> webApiDatabaseSettings) :
  12. base(webApiDatabaseSettings, "Room")
  13. { }
  14. public async Task<List<Room>> GetRoomsAsync() =>
  15. await _mongoCollection.Find(_ => true).ToListAsync();
  16. public async Task CreateRoomAsync(Room room) =>
  17. await _mongoCollection.InsertOneAsync(room);
  18. public async Task<bool> AddCustomerToRoom(string customerId,string roomId)
  19. {
  20. var room = await _mongoCollection.Find(k => k.Id == roomId).FirstOrDefaultAsync();
  21. if (room is null)
  22. return false;
  23. room.Customers.Add(new CustomerDTO { CustomerId = customerId, DateOfEnteringRoom = DateTime.Now});
  24. await _mongoCollection.ReplaceOneAsync(x => x.Id == roomId, room);
  25. return true;
  26. }
  27. public async Task<Room> GetRoomAsync(string roomId) =>
  28. await _mongoCollection.Find(r => r.Id == roomId).FirstOrDefaultAsync();
  29. public async Task<bool> AddMessage(string roomId,Message message)
  30. {
  31. var room = await GetRoomAsync(roomId);
  32. if (room is null)
  33. return false;
  34. room.Messages.Add(message);
  35. await _mongoCollection.ReplaceOneAsync(x => x.Id == roomId, room);
  36. return true;
  37. }
  38. public async Task<List<Message>> GetMessagesForSpecificRoom(string roomId)
  39. {
  40. var room = await _mongoCollection.Find(r => r.Id == roomId).FirstOrDefaultAsync();
  41. if (room is null) return new List<Message>();
  42. return room.Messages;
  43. }
  44. public async Task<List<Room>> GetRoomsForSupport(string supportId) =>
  45. await _mongoCollection.Find(k => k.CreatedBy == supportId).ToListAsync();
  46. }
  47. }