Beispiel #1
0
        public PartialViewResult _vincularPorifissionais()
        {
            var t = new UserXOportunidade()
            {
                OportunidadeId = 38,
                UserId         = 3,
                StatusID       = 2
            };

            var usuario = PixCoreValues.UsuarioLogado;
            var keyUrl  = ConfigurationManager.AppSettings["UrlAPI"].ToString();
            var url     = keyUrl + "/Seguranca/WpOportunidades/CanditarOportunidade/" + usuario.idCliente + "/" +
                          PixCoreValues.UsuarioLogado.IdUsuario;

            var envio = new
            {
                usuario.idCliente,
                userXOportunidade = t,
            };

            var helper = new ServiceHelper();
            var result = helper.Post <object>(url, envio);

            return(PartialView());
        }
Beispiel #2
0
        public async Task EnviarEmailAsync(string token, Oportunidade oportunidade, UserXOportunidade userXOportunidade)
        {
            try
            {
                await _segService.ValidateTokenAsync(token);

                var(emailConfigs, emailConstants) = GetConfiguration();
                var content = await System.IO.File.ReadAllTextAsync("wwwroot/Match-Opt.html");

                foreach (var item in emailConstants)
                {
                    var text = string.Empty;

                    if ("endereco".Equals(item.Key.ToLower()))
                    {
                        text = oportunidade.Endereco.GetType().GetProperty("Descricao").GetValue(oportunidade.Endereco, null).ToString();
                    }
                    if ("nomecontratado".Equals(item.Key.ToLower()))
                    {
                        text = userXOportunidade.GetType().GetProperty("NomeContratado").GetValue(userXOportunidade, null).ToString();
                    }
                    else
                    {
                        text = oportunidade.GetType().GetProperty(item.Key).GetValue(oportunidade, null).ToString();
                    }

                    if (!string.IsNullOrEmpty(text))
                    {
                        content = content.Replace(item.Value, text);
                    }
                }

                var configuracoes = await _configService.GetConfiguracoesAsync(oportunidade.IdCliente, oportunidade.UsuarioCriacao);

                var sender = emailConfigs.GetValue <string>("Sender");

                var configuracao = configuracoes.Where(c => c.Chave.Equals(sender)).SingleOrDefault();

                if (!string.IsNullOrEmpty(oportunidade.EmailEmpresa))
                {
                    var emailToClient = new Email(content, $"Oportunidade: { oportunidade.Nome }", configuracao.Valor, oportunidade.EmailEmpresa, oportunidade.IdCliente);
                    await _emailService.EnviarEmailAsync(emailToClient, oportunidade.IdCliente, oportunidade.UsuarioCriacao);
                }
            }
            catch (Exception e)
            {
                //Erro ao enviar e-mail não impacta no processo
            }
        }
Beispiel #3
0
        public async Task <IActionResult> RelatesUserOportunidadeAsync([FromRoute] string token, [FromBody] UserXOportunidade userXOportunidade)
        {
            try
            {
                var result = await _opDomain.SaveUserXOportunidadeAsync(token, userXOportunidade);

                if (userXOportunidade.StatusID == 1) //Aprovado
                {
                    var op = await _opDomain.GetByIdAsync(userXOportunidade.OportunidadeId, token);

                    if (op != null)
                    {
                        await _emailHandler.EnviarEmailAsync(token, op, userXOportunidade);
                    }
                }

                return(Ok(result));
            }
            catch (InvalidTokenException e)
            {
                return(StatusCode(401, $"{ e.Message } { e.InnerException.Message }"));
            }
            catch (OportunidadeException e)
            {
                return(StatusCode(400, $"{ e.Message } { e.InnerException.Message }"));
            }
            catch (Exception e)
            {
                return(StatusCode(500, "Ocorreu um erro ao tentar relacionar o usuário à oportunidade. Entre em contato com o suporte."));
            }
        }
Beispiel #4
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="token"></param>
        /// <param name="userXOportunidade"></param>
        /// <returns></returns>
        /// <exception cref="OportunidadeException"></exception>
        /// <exception cref="InvalidTokenException"></exception>
        public async Task <UserXOportunidade> SaveUserXOportunidadeAsync(string token, UserXOportunidade userXOportunidade)
        {
            try
            {
                await _segService.ValidateTokenAsync(token);

                if (userXOportunidade.ID == 0)
                {
                    userXOportunidade.ID = _repository.Add(userXOportunidade);
                    return(userXOportunidade);
                }
                else
                {
                    _repository.Update(userXOportunidade);
                    return(userXOportunidade);
                }
            }
            catch (InvalidTokenException e)
            {
                throw e;
            }
            catch (Exception e)
            {
                throw new OportunidadeException("Não foi possível relacionar o usuário à oportunidade. Entre em contato com o suporte.", e);
            }
        }
Beispiel #5
0
        public string Match(UserXOportunidade userXOportunidade)
        {
            try
            {
                var usuario = PixCoreValues.UsuarioLogado;
                var keyUrl  = ConfigurationManager.AppSettings["UrlAPI"].ToString();
                var url     = keyUrl + "/Seguranca/WpOportunidades/CanditarOportunidade/" + usuario.idCliente + "/" + usuario.IdUsuario;

                var pServico = GetProfissionais(new List <int>()
                {
                    userXOportunidade.UserId
                }).SingleOrDefault();
                var user = GetUsers(new List <int>()
                {
                    pServico.Profissional.IdUsuario
                }).SingleOrDefault();
                var op = GetOportunidade(userXOportunidade.OportunidadeId);

                var candidatos       = GetProfissionaisByOpt(userXOportunidade.OportunidadeId);
                var qtdCandAprovados = candidatos.Where(c => c.OportunidadeId.Equals(op.Id) && c.StatusID == 1).Count();

                if (op.Qtd > qtdCandAprovados && userXOportunidade.StatusID != 3)
                {
                    if (!FinanceiroHelper.VerifcaSaldoCliente(op.Valor, PixCoreValues.UsuarioLogado))
                    {
                        return("Saldo insuficiente para a contratação.");
                    }

                    var empresa = GetEmpresa(usuario.idEmpresa);

                    userXOportunidade.NomeContratado   = pServico.Profissional.Nome;
                    userXOportunidade.EmailContratado  = pServico.Profissional.Email;
                    userXOportunidade.EmailContratante = empresa.Email;
                    var envio = new
                    {
                        userXOportunidade,
                    };

                    var helper = new ServiceHelper();
                    var o      = helper.Post <object>(url, envio);

                    if (userXOportunidade.StatusID == 1) //Aprovado
                    {
                        FinanceiroHelper.LancaTransacoes(op.Valor * -1, "52", 3,
                                                         "52", 3, 2, 2, "Pagando contratado.", PixCoreValues.UsuarioLogado, op.Id);

                        FinanceiroHelper.LancaTransacoes(op.Valor, "52", 3,
                                                         pServico.Profissional.IdUsuario.ToString(), 1, 2, 1, "Pagando contratado.", PixCoreValues.UsuarioLogado, op.Id, Status.Bloqueado);
                    }

                    return(JsonConvert.SerializeObject(new ProfissionalViewModel(pServico.Profissional.ID, user.Nome, pServico.Servico.Nome, pServico.Profissional.Telefone.Numero,
                                                                                 pServico.Profissional.Telefone.ID, pServico.Profissional.DataNascimento.ToShortDateString(), pServico.Profissional.Email, pServico.Profissional.IdUsuario, pServico.Profissional.Endereco)
                    {
                        Valor = op.Valor,
                        Avaliacao = pServico.Profissional.Avaliacao,
                    }));
                }

                //Reprovando os demais profissionais
                var profissionais = candidatos.Where(c => c.OportunidadeId.Equals(op.Id) && c.StatusID == 2);
                foreach (var item in profissionais)
                {
                    item.StatusID = 3;

                    var envio = new
                    {
                        userXOportunidade = item,
                    };

                    var helper = new ServiceHelper();
                    var o      = helper.Post <object>(url, envio);
                }


                return("Não é possível aprovar mais profissionais para essa vaga.");
            }
            catch (Exception e)
            {
                return("Não foi possível completar a operação.");
            }
        }