public async Task <ServiceResponse <GetCharacterDto> > UpdateCharacter(UpdateCharacterDto updatedCharacter) { ServiceResponse <GetCharacterDto> serviceResponse = new ServiceResponse <GetCharacterDto>(); try { Character character = await _context.Characters.Include(c => c.User).FirstOrDefaultAsync(c => c.Id == updatedCharacter.Id); if (character.User.Id == GetUserId()) { character.Name = updatedCharacter.Name; character.Class = updatedCharacter.Class; character.Defense = updatedCharacter.Defense; character.HitPoints = updatedCharacter.HitPoints; character.Strength = updatedCharacter.Strength; character.Intelligence = updatedCharacter.Intelligence; _context.Characters.Update(character); await _context.SaveChangesAsync(); serviceResponse.Data = _mapper.Map <GetCharacterDto>(character); } else { serviceResponse.Success = false; serviceResponse.Message = "Character not found."; } } catch (Exception ex) { serviceResponse.Success = false; serviceResponse.Message = ex.Message; } return(serviceResponse); }
public async Task <ServiceResponse <GetCharacterDto> > UpdateCharacter(UpdateCharacterDto updateCharacter) { ServiceResponse <GetCharacterDto> serviceResponse = new ServiceResponse <GetCharacterDto>(); try { // using FirstOrDefault will return null if data is not found Character character = await _context.Characters.FirstOrDefaultAsync(c => c.Id == updateCharacter.Id); character.Name = updateCharacter.Name; character.HitPoints = updateCharacter.HitPoints; character.Strength = updateCharacter.Strength; character.Defense = updateCharacter.Defense; character.Intelligence = updateCharacter.Intelligence; character.Class = updateCharacter.Class; _context.Characters.Update(character); await _context.SaveChangesAsync(); serviceResponse.Data = _mapper.Map <GetCharacterDto>(character); } catch (Exception ex) { serviceResponse.Success = false; serviceResponse.Message = ex.Message; } return(serviceResponse); }
//TODO public async Task <ServiceResponse <GetCharacterDto> > UpdateCharacter(UpdateCharacterDto updatedCharacter) { //EF Include() is needed to include related entities on the query results, by default EF includes null instead var characterToUpdate = await _context.Characters.Include(c => c.User).FirstOrDefaultAsync(c => c.Id == updatedCharacter.Id); var response = new ServiceResponse <GetCharacterDto>(); if (characterToUpdate != null && characterToUpdate.User.Id == GetSecurityUserId()) { _mapper.Map(updatedCharacter, characterToUpdate); //uses the same instances for mapping, needed to avoid EF entity tracker issues _context.Characters.Update(characterToUpdate); await _context.SaveChangesAsync(); response.Data = _mapper.Map <GetCharacterDto>(characterToUpdate); } else { //response.Data = _mapper.Map<GetCharacterDto>(updatedCharacter); response.Success = false; response.Message = "Cannot update Character"; } return(response); }
public async Task <ServiceResponse <GetCharacterDto> > UpdateCharacter(UpdateCharacterDto updatedCharacter) { ServiceResponse <GetCharacterDto> serviceResponse = new ServiceResponse <GetCharacterDto>(); try { // Character character = characters.FirstOrDefault(c => c.Id == updatedCharacter.Id); Character character = _dBContext.Characters.Where(c => c.Id == updatedCharacter.Id).FirstOrDefault(); // MAGO: character.Name = updatedCharacter.Name; character.Class = updatedCharacter.Class; character.Defense = updatedCharacter.Defense; character.HitPoints = updatedCharacter.HitPoints; character.Intelligence = updatedCharacter.Intelligence; character.Strength = updatedCharacter.Strength; _dBContext.Characters.Update(character); // MAGO: _dBContext.SaveChanges(); // MAGO: serviceResponse.Data = _mapper.Map <GetCharacterDto>(character); } catch (Exception ex) { serviceResponse.Success = false; serviceResponse.Message = ex.Message; serviceResponse.Data = null; } return(serviceResponse); }
public async Task <ServiceResponse <GetCharacterDto> > UpdateCharacter(UpdateCharacterDto updatedCharacter) { ServiceResponse <GetCharacterDto> serviceResponse = new ServiceResponse <GetCharacterDto>(); Character dbCharacter = await context.Characters.FirstOrDefaultAsync(c => c.Id == updatedCharacter.Id); // This could also be a try/catch to catch other exceptions. if (dbCharacter != null) { // Update the character properties. dbCharacter.Name = updatedCharacter.Name; dbCharacter.HitPoints = updatedCharacter.HitPoints; dbCharacter.Strength = updatedCharacter.Strength; dbCharacter.Defense = updatedCharacter.Defense; dbCharacter.Intelligence = updatedCharacter.Intelligence; dbCharacter.Class = updatedCharacter.Class; context.Characters.Update(dbCharacter); await context.SaveChangesAsync(); serviceResponse.Data = mapper.Map <GetCharacterDto>(updatedCharacter); serviceResponse.Success = true; serviceResponse.Message = $"Character (Id: {updatedCharacter.Id}) update successfull."; } else { serviceResponse.Success = false; serviceResponse.Message = $"Character update failed, character with Id: {updatedCharacter.Id} not found."; } return(serviceResponse); }
public async Task <ServiceResponse <GetCharacterDto> > UpdateCharacter(UpdateCharacterDto updatedCharacter) { ServiceResponse <GetCharacterDto> serviceResponse = new ServiceResponse <GetCharacterDto>(); Character character = await _context.Characters.FirstOrDefaultAsync(c => c.Id == updatedCharacter.Id); _context.Characters.Update(character); _context.SaveChanges(); serviceResponse.Data = _mapper.Map <GetCharacterDto>(character); return(serviceResponse); }
public async Task <ServiceResponse <GetCharacterDto> > UpdateCharacter(UpdateCharacterDto updatedCharacter) { // Create serviceResponse ServiceResponse <GetCharacterDto> serviceResponse = new ServiceResponse <GetCharacterDto>(); try { // Find the existing character within "characters" array. Pull out into character // Includes grabs the user data associated with the grabbed data Character character = await _context.Characters.Include(x => x.User).FirstOrDefaultAsync(x => x.Id == updatedCharacter.Id); if (character.User.Id == GetUserId()) { // Copy over all data into new character character.Name = updatedCharacter.Name; character.Class = updatedCharacter.Class; character.Defense = updatedCharacter.Defense; character.HitPoints = updatedCharacter.HitPoints; character.Intelligence = updatedCharacter.Intelligence; character.Strength = updatedCharacter.Strength; // Update the database _context.Characters.Update(character); // Save changes await _context.SaveChangesAsync(); // Set the service Response with new character serviceResponse.Data = _mapper.Map <GetCharacterDto>(character); } else { serviceResponse.Success = false; serviceResponse.Message = "Character not found."; } } catch (Exception ex) { serviceResponse.Success = false; serviceResponse.Message = ex.Message; } return(serviceResponse); }
public async Task <ServiceResponse <GetCharacterDto> > UpdateCharacter(UpdateCharacterDto updatedCharacter) { ServiceResponse <GetCharacterDto> serviceResponse = new ServiceResponse <GetCharacterDto>(); try { Character character = characters.FirstOrDefault(c => c.Id == updatedCharacter.Id); character.Name = updatedCharacter.Name; character.Class = updatedCharacter.Class; character.Defense = updatedCharacter.Defense; character.HitPoints = updatedCharacter.HitPoints; character.Intelligence = updatedCharacter.Intelligence; character.Strength = updatedCharacter.Strength; serviceResponse.Data = _mapper.Map <GetCharacterDto>(character); } catch (Exception ex) { serviceResponse.Success = false; serviceResponse.Message = ex.Message; } return(serviceResponse); }