Beispiel #1
0
        public FuncionarioFoto AddOrUpdateFuncionarioFoto(FuncionarioFoto func)
        {
            if (!FuncionarioExiste(func.FuncionarioId))
            {
                throw new FuncionarioNaoEncontradoException(func.FuncionarioId);
            }

            db.FuncionariosFotos.AddOrUpdate(func);
            db.SaveChanges();

            return(func);
        }
        public async Task <HttpResponseMessage> AddOrUpdateCandidato()
        {
            try
            {
                FuncionariosService funcService = new FuncionariosService();

                // Verifica se request contém multipart/form-data.
                if (!Request.Content.IsMimeMultipartContent())
                {
                    throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);
                }

                //Diretório App_Data, para salvar o arquivo temporariamente
                string root     = HttpContext.Current.Server.MapPath("~/App_Data");
                var    provider = new MultipartFormDataStreamProvider(root);

                // Lê o arquivo da requisição assincronamente
                await Request.Content.ReadAsMultipartAsync(provider);

                //Deserializa os dados do Candidato
                JavaScriptSerializer json_serializer = new JavaScriptSerializer();
                var obj = json_serializer.DeserializeObject(provider.FormData.Get("candidato")) as Dictionary <string, object>;

                Image thumbnail = null;
                Image img       = null;
                try
                {
                    //Lê a foto do candidato

                    var httpPostedFile = HttpContext.Current.Request.Files["foto"];
                    if (httpPostedFile != null)
                    {
                        int length = httpPostedFile.ContentLength;
                        var bytes  = new byte[length]; //get imagedata
                        httpPostedFile.InputStream.Read(bytes, 0, length);
                        var stream = new MemoryStream(bytes);
                        img       = Image.FromStream(stream, false, false);
                        img       = ImageService.EnquadrarImagem((Bitmap)img);
                        thumbnail = ImageService.GetThumbnail(img, 75, 75);
                        stream.Dispose();
                        if (img.Height > 350)
                        {
                            img = ImageService.GetThumbnail(img, 350, 350);
                        }
                    }
                }
                catch
                {
                    return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, $"Erro ao processar imagem. Por favor, escolha outra! "));
                }

                int funcionarioId = int.Parse(obj["FuncionarioId"].ToString());
                //Cria uma instância de Funcionario
                Funcionario funcionario = null;
                try
                {
                    funcionario = funcService.GetFuncionario(funcionarioId);
                }
                catch (FuncionarioNaoEncontradoException)
                {
                    return(Request.CreateErrorResponse(HttpStatusCode.NotFound, "Funcionário não encontrado!"));
                }

                funcionario.Login        = obj["LoginFuncionario"].ToString();
                funcionario.Nome         = obj["NomeFuncionario"].ToString();
                funcionario.Cargo        = obj["CargoFuncionario"].ToString();
                funcionario.Area         = obj["AreaFuncionario"].ToString();
                funcionario.Email        = obj["EmailFuncionario"].ToString();
                funcionario.Sobre        = (obj.ContainsKey("Sobre") && obj["Sobre"] != null) ? obj["Sobre"].ToString() : null;
                funcionario.DataAdmissao = DateTime.Parse(obj["DataAdmissaoFuncionario"].ToString());
                funcionario.Thumbnail    = ImageService.ConvertImageByte(thumbnail);

                funcService.AddOrUpdateFuncionario(funcionario);

                FuncionarioFoto funcFoto = new FuncionarioFoto
                {
                    FuncionarioId = funcionario.Id,
                    Foto          = ImageService.ConvertImageByte(img)
                };

                funcService.AddOrUpdateFuncionarioFoto(funcFoto);
                bool?validado = null;
                //if (User.IsInRole("Administrador")) validado = true;

                //Cria uma intância do candidato
                Candidato c = new Candidato
                {
                    FuncionarioId      = funcionarioId,
                    CodigoEleicao      = int.Parse(obj["CodigoEleicao"].ToString()),
                    HorarioCandidatura = HelpersMethods.HorarioBrasilia(),
                    Validado           = validado
                };

                //Tenta salvar as atualizações
                try
                {
                    c = candidatosService.AddOrUpdateCandidato(c);
                    candidatosService.ExcluirMotivoReprovacao(c);
                    //Excluir o arquivo
                    File.Delete(provider.FileData[0].LocalFileName);
                }
                catch (FuncionarioNaoCadastradoEleicaoException)
                {
                    return(Request.CreateResponse(HttpStatusCode.BadRequest, "Você não está inscrito nessa eleição! Contate o administrador."));
                }
                catch (FuncionarioNaoElegivelException e)
                {
                    return(Request.CreateResponse(HttpStatusCode.BadRequest, e.Message));
                }
                catch
                {
                    return(Request.CreateResponse(HttpStatusCode.InternalServerError, "Ocorreu um erro desconhecido. Por favor, entre em contato com o suporte."));
                }

                return(Request.CreateResponse(HttpStatusCode.OK, new CandidatoDTO(c)));
            }
            catch
            {
                return(Request.CreateResponse(HttpStatusCode.InternalServerError, "Ocorreu um erro desconhecido. Por favor, entre em contato com o suporte."));
            }
        }