Пример #1
0
        /// <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));
        }
Пример #2
0
        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);
        }
Пример #3
0
        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();
            }
        }