/// <summary> /// загрузит все чего не хватает, истории только актуальные /// </summary> /// <param name="roomDb"></param> /// <returns></returns> private async Task <Room> GetRoomFromDbObject(PlaningRoomDal roomDb) { if (roomDb == null) { return(null); } var storedRoom = new StoredRoom { Name = roomDb.Name, Password = roomDb.Password, Id = roomDb.Id, Stories = (await _storyRepository.GetActualForRoom(roomDb.Id)).Select(x => { var st = new Story(); st.FromDbObject(x); return(st); }).ToList() }; await _roomRepository.LoadUsers(roomDb); storedRoom.Users = //(await _planingUserRepository.GetForRoom(roomDb.Id)) roomDb.Users.Select(x => { var st = new PlanitUser(); st.FromDbObject(x); return(st); }).ToList(); return(new Room(storedRoom)); }
public async Task <Room> CreateRoomWithUser(string roomName, string password, PlanitUser user) { if (string.IsNullOrWhiteSpace(roomName)) { throw new SomeCustomException(Consts.PlanitPokerErrorConsts.RoomNameIsEmpty); } if (user == null) { throw new SomeCustomException(Consts.PlanitPokerErrorConsts.PlanitUserNotFound); } if (string.IsNullOrWhiteSpace(password)) { password = null; } if (Rooms.ContainsKey(roomName)) { throw new SomeCustomException(Consts.PlanitPokerErrorConsts.RoomAlreadyExist); } var roomData = new StoredRoom(roomName, password); var room = new Room(roomData); var roomFromDb = await _roomRepository.Exist(roomName); if (roomFromDb) // != null { throw new SomeCustomException(Consts.PlanitPokerErrorConsts.RoomAlreadyExist); } var added = Rooms.TryAdd(roomName, room); if (added) { return(room); } throw new SomeCustomException(Consts.PlanitPokerErrorConsts.SomeErrorWithRoomCreating); }
public StoredRoomReturn(StoredRoom obj) : this() { if (obj == null) { return; } Name = obj.Name; DieDate = obj.DieDate; Status = obj.Status; CurrentStoryId = obj.CurrentStoryId; if (obj.Users != null) { Users = obj.Users.Select(x => new PlanitUserReturn(x)).ToList(); } if (obj.Stories != null) { Stories = obj.Stories.Select(x => new StoryReturn(x)).ToList(); } }