コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        //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);
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        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);
        }
コード例 #6
0
        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);
        }
コード例 #7
0
        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);
        }
コード例 #8
0
        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);
        }