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()); }
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 } }
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.")); } }
/// <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); } }
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."); } }