public async Task <ActionResult <Tecnico> > AtualizarTecnico([FromServices] LambadaContext context, [FromBody] Tecnico model, int id)
        {
            if (model.Id != id)
            {
                BadRequest(new { message = "Id informado invalido" });
            }
            else if (!ModelState.IsValid)
            {
                return(BadRequest(new { message = "Objeto informado inválido" }));
            }
            else if (model.Sexo != Sexo.Ferminino && model.Sexo != Sexo.Masculino)
            {
                return(BadRequest(new { message = "Sexo informado inválido" }));
            }
            try
            {
                context.Entry <Tecnico>(model).State = EntityState.Modified;
                await context.SaveChangesAsync();

                return(Ok(new { message = "Dados alterados com sucesso" }));
            }
            catch (Exception)
            {
                return(BadRequest(new { message = "Não foi possivel alterar o Tecnico" }));
            }
        }
        public async Task <ActionResult <List <Lambada> > > Listadelamabda([FromServices] LambadaContext context)
        {
            try
            {
                var Lambadas = await context.Lambada.Include(x => x.Tecnico).AsNoTracking().ToListAsync();

                return(Lambadas);
            }
            catch (Exception)
            {
                return(BadRequest(new { message = "Não foi possivel trazer a lista de lambadas" }));
            }
        }
        public async Task <ActionResult <List <Tecnico> > > TodosTencicos([FromServices] LambadaContext context)
        {
            try
            {
                var Tecnicos = await context.Tecnico.AsNoTracking().ToListAsync();

                return(Ok(Tecnicos));
            }
            catch (Exception)
            {
                return(BadRequest(new { message = "Não foi possivel extrai a lista de tecnicos" }));
            }
        }
        public async Task <ActionResult <Lambada> > LambadaPorId(int id, [FromServices] LambadaContext context)
        {
            try
            {
                var lambada = await context.Lambada.Include(x => x.Tecnico).AsNoTracking().ToListAsync();

                if (lambada == null)
                {
                    return(Ok(new { message = "Nenhuma lambada encontrada com este id" }));
                }
                return(Ok(lambada));
            }
            catch (Exception)
            {
                return(BadRequest(new { message = "Não foi possivel buscar a lambada" }));
            }
        }
        public async Task <ActionResult <Tecnico> > TecnicoPorId(int id, [FromServices] LambadaContext context)
        {
            try
            {
                var tecnico = await context.Tecnico.AsNoTracking().Where(x => x.Id == id).FirstOrDefaultAsync();

                if (tecnico == null)
                {
                    return(Ok(new { message = "Não existe nehum tecnico cadastrado com este nome" }));
                }
                return(Ok(tecnico));
            }
            catch (Exception)
            {
                return(BadRequest(new { Message = "Não foi possivel extrair o tecnico " }));
            }
        }
        public async Task <ActionResult <Lambada> > DeletaLambada(int id, [FromServices] LambadaContext context)
        {
            try
            {
                var lambada = await context.Lambada.Where(x => x.Id == id).FirstOrDefaultAsync();

                if (lambada == null)
                {
                    return(Ok(new { message = "Lambada não encontrada" }));
                }
                context.Remove(lambada);
                await context.SaveChangesAsync();

                return(Ok(new { message = "Lambada excluída com sucesso" }));
            }
            catch (Exception)
            {
                return(BadRequest(new { message = "Não foi possivel excluir a lambada" }));
            }
        }
        public async Task <ActionResult <Tecnico> > DeletarTecncio(int id, [FromServices] LambadaContext context)
        {
            var tecnico = await context.Tecnico.FirstOrDefaultAsync(x => x.Id == id);

            if (tecnico == null)
            {
                return(BadRequest(new { message = "Tecnico não encontrado" }));
            }
            try
            {
                context.Remove(tecnico);
                await context.SaveChangesAsync();

                return(Ok(new { message = "Tecnico excluído com sucesso" }));
            }
            catch (Exception)
            {
                return(BadRequest(new { message = "Não foi possivel excluir o tecnico" }));
            }
        }
        public async Task <ActionResult <Lambada> > AlterarLambada(int id, [FromServices] LambadaContext context, [FromBody] Lambada model)
        {
            if (model.Id != id)
            {
                return(BadRequest(new { message = "Lambada digitada incorretamente" }));
            }
            else if (!ModelState.IsValid)
            {
                return(BadRequest(new { message = "Objecto inaválido" }));
            }
            try
            {
                context.Entry <Lambada>(model).State = EntityState.Modified;
                await context.SaveChangesAsync();

                return(Ok(new { message = "Lambada atualizada com sucesso" }));
            }
            catch (Exception e)
            {
                return(BadRequest(new { message = "Não fooi possivel atualizar a lambada " }));
            }
        }
        public async Task <ActionResult <List <Lambada> > > LambadaPorTecncico(int id, [FromServices] LambadaContext context)
        {
            try
            {
                var Lambadas = await context.Lambada.Include(x => x.Tecnico).AsNoTracking().Where(x => x.TecnicoId == id).ToListAsync();

                if (Lambadas == null)
                {
                    return(Ok(new { message = "Nenhuma lambada encontrada para este tecnico" }));
                }
                return(Ok(Lambadas));
            }
            catch (Exception)
            {
                return(BadRequest(new { message = "Não foi possivel extrair a lista de lambadas por tecnico" }));
            }
        }
        public async Task <ActionResult <Tecnico> > CadastraTecnico([FromBody] Tecnico model, [FromServices] LambadaContext context)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(new { Message = "Dados do tecnico inavalido" }));
            }
            else if (model.Sexo != Sexo.Ferminino && model.Sexo != Sexo.Masculino)
            {
                return(BadRequest(new { message = "Sexo invalido" }));
            }
            try
            {
                context.Add(model);
                await context.SaveChangesAsync();

                return(Ok(new { message = "Tecnico cadastrado com sucesso" }));
            }
            catch (Exception)
            {
                return(BadRequest(new { message = "Não foi possivel cadastrar o tecnico " }));
            }
        }