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)); } }
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); }