public async Task <IActionResult> Atualizar(Ganho ganho)
        {
            var usuario = User.Identity.Name;

            try
            {
                if (ganho.Id == null)
                {
                    throw new KeyNotFoundException("Id obrigatorio para atualização!");
                }

                int id = (int)ganho.Id;

                if (!await ganhosDAL.ValidaUsuario(usuario, (int)ganho.Id))
                {
                    throw new KeyNotFoundException("Ganho não foi encontrado ou você não tem acesso a ele!");
                }

                if (!ganho.ValidarTipoEData())
                {
                    throw new KeyNotFoundException("Preencha as data de contabilização conforme o Tipo escolhido!");
                }

                await ganhosDAL.Update(ganho);

                return(Ok(ganho));
            }
            catch (KeyNotFoundException ex)
            {
                gravadorLog.GravarLogErro(ex, 400, $"Usuário: {usuario} - GanhoId: {ganho.Id}");
                return(BadRequest(ex.Message));
            }
            catch (Exception ex)
            {
                gravadorLog.GravarLogErro(ex, 500);
                return(StatusCode(500));
            }
        }
        public async Task <IActionResult> Criar(Ganho ganho)
        {
            var usuario = User.Identity.Name;

            try
            {
                if (!await ciclosDAL.ValidaUsuario(usuario, ganho.CicloId))
                {
                    throw new KeyNotFoundException("Ciclo não foi encontrado ou você não tem acesso a ele!");
                }

                if (!ganho.ValidarTipoEData())
                {
                    throw new KeyNotFoundException("Preencha as data de contabilização conforme o Tipo escolhido!");
                }

                await ganhosDAL.Create(ganho);

                if (Uri.TryCreate("/ganhos/" + ganho.Id, UriKind.Relative, out Uri result))
                {
                    return(Created(result, ganho));
                }

                return(Ok(ganho));
            }
            catch (KeyNotFoundException ex)
            {
                gravadorLog.GravarLogErro(ex, 400, $"Usuário: {usuario} - CicloId: {ganho.CicloId}");
                return(BadRequest(ex.Message));
            }
            catch (Exception ex)
            {
                gravadorLog.GravarLogErro(ex, 500);
                return(StatusCode(500));
            }
        }