public async Task <ActionResult <GastoResource> > UpdateGasto(Guid id, [FromBody] SaveGastoResource saveGastoResource)
        {
            var validator        = new SaveGastoResourceValidator();
            var validationResult = await validator.ValidateAsync(saveGastoResource);


            var requestIsInvalid = id == null || !validationResult.IsValid;

            if (requestIsInvalid)
            {
                return(BadRequest(validationResult.Errors));
            }
            var userId           = this.User.FindFirstValue(ClaimTypes.NameIdentifier);
            var gastoToBeUpdated = await _gastoService.GetGastoById(id, userId);

            if (gastoToBeUpdated == null)
            {
                return(NotFound());
            }

            var gasto = _mapper.Map <SaveGastoResource, Gasto>(saveGastoResource);

            await _gastoService.UpdateGasto(gastoToBeUpdated, gasto);

            var updatedGasto = await _gastoService.GetGastoById(id, userId);

            var updateGastoResource = _mapper.Map <Gasto, GastoResource>(updatedGasto);

            return(Ok(updateGastoResource));
        }
        public async Task <ActionResult <GastoResource> > CreateGasto([FromBody] SaveGastoResource saveGastoResource)
        {
            var validator        = new SaveGastoResourceValidator();
            var validationResult = await validator.ValidateAsync(saveGastoResource);

            if (!validationResult.IsValid)
            {
                return(BadRequest(validationResult.Errors));
            }
            var userId = this.User.FindFirstValue(ClaimTypes.NameIdentifier);

            var gastoToCreate = _mapper.Map <SaveGastoResource, Gasto>(saveGastoResource);

            var newGasto = await _gastoService.CreateGasto(gastoToCreate, userId);

            var gasto = await _gastoService.GetGastoById(newGasto.Id, userId);

            var gastoResource = _mapper.Map <Gasto, GastoResource>(gasto);

            return(Ok(gastoResource));
        }