public async Task <IActionResult> Un_EquipItem(Un_EquipItemRequestDTO un_equipItemRequest)
        {
            var result = await _characterService.Un_EquipItemAsync(un_equipItemRequest);

            switch (result._result)
            {
            case Un_EquipItemResponseDTO.RequestResult.Success:           return(Ok(result));

            case Un_EquipItemResponseDTO.RequestResult.CharacterNotFound: return(NotFound(result));

            default:                                                      return(BadRequest(result));
            }
        }
Example #2
0
        public async Task <Un_EquipItemResponseDTO> Un_EquipItemAsync(Un_EquipItemRequestDTO un_equipRequest)
        {
            var result = new Un_EquipItemResponseDTO
            {
                Request = un_equipRequest
            };

            var character = await _characterRepo.GetCharacterItemsAsync(un_equipRequest.CharacterId);

            if (character == null)
            {
                result._result = Un_EquipItemResponseDTO.RequestResult.CharacterNotFound;
                return(result);
            }

            var item = character.Items.Where(i => i.Item.Name == un_equipRequest.ItemName).FirstOrDefault();

            if (item == null)
            {
                result._result = Un_EquipItemResponseDTO.RequestResult.InventoryWithoutItem;
                return(result);
            }


            if (!item.IsEquipped)
            {
                var itemEquipped = character.Items.Where(i => i.Item.Type == item.Item.Type && i.IsEquipped)
                                   .FirstOrDefault();

                if (itemEquipped != null)
                {
                    itemEquipped.IsEquipped = false;
                }
            }

            item.IsEquipped = !item.IsEquipped;

            try
            {
                await _characterRepo.SaveChangesAsync();

                result._result = Un_EquipItemResponseDTO.RequestResult.Success;
            }
            catch (Exception)
            {
                result._result = Un_EquipItemResponseDTO.RequestResult.BadRequest;
            }

            return(result);
        }