public async Task <IActionResult> AtrelarEvento(GrupoEvento grupo)
        {
            //Recarrega os combos
            Util carregamentoCombo = ObtemComboGruposEventos();

            if (!ModelState.IsValid)
            {
                ViewBag.ListaGrupos  = carregamentoCombo.ListaGrupos;
                ViewBag.ListaEventos = carregamentoCombo.ListaEventos;

                return(View(grupo));
            }

            var retorno = await _grupoAppService.AtrelarGrupoEvento(grupo);

            if (retorno != null)
            {
                ViewBag.Codigo       = retorno.cdretorno;
                ViewBag.Mensagem     = retorno.mensagem;
                ViewBag.ListaGrupos  = carregamentoCombo.ListaGrupos;
                ViewBag.ListaEventos = carregamentoCombo.ListaEventos;

                TempData["Mensagem"] = retorno.mensagem;
                TempData["Codigo"]   = retorno.cdretorno;

                if (retorno.cdretorno == 1)
                {
                    return(View(grupo));
                }
            }

            return(RedirectToAction("AtrelarEvento"));
        }
        public GrupoEventoViewModel SortearEvento(GrupoEvento evento)
        {
            string url           = _baseAppService.GetUrlApi() + "api/Sorteio/Sortear";
            var    stringContent = new StringContent(JsonConvert.SerializeObject(evento), UnicodeEncoding.UTF8, "application/json");

            var    response = _http.PostAsync(url, stringContent).Result;
            string json     = response.Content.ReadAsStringAsync().Result;
            var    retorno  = JsonConvert.DeserializeObject <GrupoEventoViewModel>(json);

            return(retorno);
        }
示例#3
0
        public Retorno AtrelarGrupoEvento(GrupoEvento grupo)
        {
            string url           = _baseAppService.GetUrlApi() + "api/Grupo/AtrelarGrupoEvento";
            var    stringContent = new StringContent(JsonConvert.SerializeObject(grupo), UnicodeEncoding.UTF8, "application/json");
            var    response      = _http.PostAsync(url, stringContent).Result;

            var json    = response.Content.ReadAsStringAsync();
            var retorno = JsonConvert.DeserializeObject <Retorno>(json.Result);

            return(retorno);
        }
示例#4
0
 private void RemoveEventos(GrupoEvento grpEvento)
 {
     using (var ctx = new BalcaoContext())
     {
         foreach (var evt in grpEvento.EventosGrupo.Where(e => e.Removed == true))
         {
             var r = ctx.EventosGrupoDao.Find(evt.IdEvtGrupo);
             ctx.EventosGrupoDao.Delete(r);
         }
     }
 }
示例#5
0
        public IActionResult btnSorteio(GrupoViewModel grupoViewModel)
        {
            GrupoEvento grupoEvento = new GrupoEvento
            {
                IdGrupoEvento = 1
            };

            //Chamando API para cadastrar o usuário na base
            using (HttpClient client = new HttpClient())
            {
                //Setando endereço da API
                client.BaseAddress = new System.Uri("http://localhost:51889/api/sorteio");
                //Limpando header
                client.DefaultRequestHeaders.Accept.Clear();
                //Adicionando um novo header do tipo JSON
                client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));

                //Transformando obj Usuario em uma string
                string stringData = JsonConvert.SerializeObject(grupoEvento);

                //Transformando string em um arquivo do tipo JSON
                var contentData = new StringContent(stringData, System.Text.Encoding.UTF8, "application/json");

                //Chamando API passando o arquivo JSON
                HttpResponseMessage response = client.PostAsync("http://localhost:51889/api/sorteio", contentData).Result;

                //Passando retorno da API para uma string
                string retorno = response.Content.ReadAsStringAsync().Result;

                //Fragmentando retorno do arquivo json
                dynamic resultado = JsonConvert.DeserializeObject(retorno);

                //Enviando retorno para a tela

                ViewBag.grupoEvento = resultado.resultado[0].IdGrupoEvento;
                ViewBag.cdGrupo     = resultado.resultado[0].CdGrupo;
                ViewBag.dtEvento    = resultado.resultado[0].DtEvento;
                ViewBag.nmEvento    = resultado.resultado[0].NmEvento;
                ViewBag.nmEndereco  = resultado.resultado[0].NmEndereco;
                ViewBag.vlEvento    = resultado.resultado[0].VlEvento;

                GrupoViewModel viewModel = new GrupoViewModel
                {
                    IdGrupoEvento = resultado.resultado[0].IdGrupoEvento,
                    cdGrupo       = resultado.resultado[0].CdGrupo,
                    dtEvento      = resultado.resultado[0].DtEvento,
                    nmEvento      = resultado.resultado[0].NmEvento,
                    nmEndereco    = resultado.resultado[0].NmEndereco,
                    vlEvento      = resultado.resultado[0].VlEvento
                };
                return(View(viewModel));
            }
        }
        public IActionResult SortearEvento(int CdGrupo, int IdGrupoEvento)
        {
            var evento = new GrupoEvento()
            {
                CdGrupo       = CdGrupo,
                IdGrupoEvento = IdGrupoEvento
            };

            var model = _eventoAppService.SortearEvento(evento);

            return(PartialView("_DetalheSorteio", model));
        }
示例#7
0
        public int GeraSorteio(GrupoEvento grupoEvento, dbAlienContext dbContext)
        {
            int idGrupoEvento = 0, eventoSorteado = 0;

            idGrupoEvento = grupoEvento.IdGrupoEvento.Value;

            var varGrupoEvento = dbContext.GrupoEvento.FirstOrDefault(u => u.IdGrupoEvento == idGrupoEvento);
            var evento         = ObtemEventosParaSortear(varGrupoEvento.CdGrupo, idGrupoEvento);

            eventoSorteado = ExecutaSorteio(evento);
            GravaSorteio(dbContext, varGrupoEvento, eventoSorteado);

            return(0);
        }
        public JsonResult AtrelarGrupoEvento([FromBody] GrupoEvento group)
        {
            if (!ModelState.IsValid)
            {
                return(Json(new { cdretorno = 1, mensagem = "Chamada fora do padrão, favor verificar!" }));
                //return BadRequest();
            }

            _dbcontext.Add(group);
            _dbcontext.SaveChanges();

            //return Ok("Vinculação realizada com sucesso!");
            return(Json(new { cdretorno = 0, mensagem = "Vinculação realizada com sucesso!" }));
        }
示例#9
0
        public IActionResult Sortear([FromBody] GrupoEvento grupoEvento)
        {
            Sorteio sorteio  = new Sorteio(_configuration);
            int     cdEvento = sorteio.GeraSorteio(grupoEvento, _dbcontext);
            var     result   = new List <GrupoEventoViewModel>();

            if (cdEvento == 0)
            {
                return(Json(new { cdretorno = 1, mensagem = "O evento selecionado não está atrelado a este grupo!", data = result }));
            }

            result = sorteio.BuscaSorteio(_dbcontext, grupoEvento);

            return(Json(new { cdretorno = 0, mensagem = "Sucesso!", data = result }));
        }
示例#10
0
        private GrupoEvento indexarFormulario(GrupoEvento Grpevt)
        {
            if (Grpevt != null)
            {
                txtCodGrpEvento.Text       = Grpevt.CodigoGrupo;
                txtDescricaoGrpEvento.Text = Grpevt.DescricaoGrupo;
                txtObservacoes.Text        = Grpevt.Observacoes;

                var q = from e in Grpevt.EventosGrupo
                        select new EventosGrupo()
                {
                    Evento = e.Evento, IdEvento = e.IdEvento, ImprimirHolerite = e.ImprimirHolerite, IdEvtGrupo = e.IdEvtGrupo, IdGrupoEvento = e.IdGrupoEvento
                };
                this.eventosGrupo = q.ToList();

                gridControlEventosGrp.DataSource = this.eventosGrupo;
            }
            return(Grpevt);
        }
示例#11
0
        public IActionResult AtrelarEvento(GrupoEvento grupo)
        {
            if (!ModelState.IsValid)
            {
                return(View());
            }

            var retorno = _grupoAppService.AtrelarGrupoEvento(grupo);

            if (retorno != null)
            {
                ViewBag.Codigo   = retorno.cdretorno;
                ViewBag.Mensagem = retorno.mensagem;

                TempData["Mensagem"] = retorno.mensagem;
                TempData["Codigo"]   = retorno.cdretorno;
            }

            return(RedirectToAction("AtrelarEvento"));
        }
示例#12
0
        private GrupoEvento indexarDados()
        {
            var codigo    = txtCodGrpEvento.Text;
            var descricao = txtDescricaoGrpEvento.Text;
            var obs       = txtObservacoes.Text;


            var grpEvento = new GrupoEvento()
            {
                CodigoGrupo    = codigo,
                DescricaoGrupo = descricao,
                Observacoes    = obs
            };

            foreach (var ev in this.eventosGrupo)
            {
                grpEvento.EventosGrupo.Add(ev);
            }

            return(grpEvento);
        }
示例#13
0
        public List <GrupoEventoViewModel> BuscaSorteio(dbAlienContext dbContext, GrupoEvento grupoEvento)
        {
            int cdEvento = 0;

            cdEvento = (int)grupoEvento.CdEvento;

            var resultado = (from ge in dbContext.GrupoEvento.Where(w => w.IdGrupoEvento == grupoEvento.IdGrupoEvento)
                             join e in dbContext.Evento on
                             new { ge.CdEvento } equals new { e.CdEvento }
                             select new GrupoEventoViewModel()
            {
                IdGrupoEvento = ge.IdGrupoEvento,
                CdGrupo = ge.CdGrupo,
                DtEvento = ge.DtEvento,
                NmEvento = e.NmEvento,
                NmEndereco = e.NmEndereco,
                VlEvento = e.VlEvento
            }).ToList();

            return(resultado);
        }
示例#14
0
 public XFrmAddGrupoEvento(GrupoEvento grupoEvento) : this()
 {
     this.grpEventoAnt = indexarFormulario(grupoEvento);
 }
示例#15
0
        //Gerar ficha financeira de cada funcionario.
        private ICollection <FichaFinanceiraFuncionario> GerarFichaFinanceira(FuncionarioCompetencia funcionario, GrupoEvento grupo, TypeTipoFechamentoFolha p_tipoFechamento)
        {
            var dataRef = funcionario.Competencia.DataFinalCompetencia;

            foreach (var evento in grupo.EventosGrupo)
            {
                //salario contratual
                if (evento.Evento.CodigoCalculo == TypeCodigoCalculo.SalarioBase)
                {
                    var qtd = obtemDiasFolha(p_tipoFechamento);

                    var salario = GetSalarioCompetencia(p_tipoFechamento, funcionario);

                    FichaFinanceiraFuncionario fichaFin = new FichaFinanceiraFuncionario(funcionario,
                                                                                         evento.Evento, salario, evento.Evento.TipoReferencia, dataRef, qtd);
                    fichaFin.Evento = evento.Evento;
                    if (fichaFin.ValorMovimento > 0M)
                    {
                        funcionario.FichaFinanceiraFuncionario.Add(fichaFin);
                    }
                }
                //calculo do INSS
                else if (evento.Evento.CodigoCalculo == TypeCodigoCalculo.INSS)
                {
                    FichaFinanceiraFuncionario fichaFin = new FichaFinanceiraFuncionario(
                        funcionarioComp: funcionario,
                        evento: evento.Evento,
                        valor: ValorInss(funcionario),
                        tipoReferencia: evento.Evento.TipoReferencia,
                        dataRef: dataRef,
                        quantidade: GetAliquotaInss(funcionario));

                    fichaFin.Evento = evento.Evento;

                    if (fichaFin.ValorMovimento > 0M)
                    {
                        funcionario.FichaFinanceiraFuncionario.Add(fichaFin);
                    }
                }
                //valor do FGTS no mês. Aliquota sempre é 8%
                else if (evento.Evento.CodigoCalculo == TypeCodigoCalculo.FGTS)
                {
                    decimal vlrFGTS = (funcionario.Funcionario.Salario * 8) / 100;
                    funcionario.ValorFgts = vlrFGTS;
                    FichaFinanceiraFuncionario fichaFin = new FichaFinanceiraFuncionario(funcionario,
                                                                                         evento.Evento, vlrFGTS, evento.Evento.TipoReferencia, dataRef, 8);
                    fichaFin.Evento = evento.Evento;
                    if (fichaFin.ValorMovimento > 0M)
                    {
                        funcionario.FichaFinanceiraFuncionario.Add(fichaFin);
                    }
                }
                //Valor do IRRF no mês, lanca o evento somente se aliquota for maior que 0
                else if (evento.Evento.CodigoCalculo == TypeCodigoCalculo.IRRF)
                {
                    var aliqIRRF = GetAliquotaIrrf(funcionario);

                    if (aliqIRRF > 0)
                    {
                        decimal vlrIRRF = (funcionario.Funcionario.Salario - ValorInss(funcionario)) *
                                          aliqIRRF / 100;

                        vlrIRRF -= GetDeducaoIrrf(funcionario);

                        FichaFinanceiraFuncionario fichaFin = new FichaFinanceiraFuncionario(funcionario,
                                                                                             evento.Evento, vlrIRRF, evento.Evento.TipoReferencia, dataRef, aliqIRRF);
                        fichaFin.Evento = evento.Evento;
                        funcionario.FichaFinanceiraFuncionario.Add(fichaFin);
                    }
                }
                else //qualquer outro codigo de calculo não tratado especificamente igual os acima...
                {
                    FichaFinanceiraFuncionario fichaFin = new FichaFinanceiraFuncionario(
                        funcionarioComp: funcionario,
                        evento: evento.Evento,
                        valor: 0M, //valor eh 0 pq é pra ser editado na folha
                        tipoReferencia: evento.Evento.TipoReferencia,
                        dataRef: dataRef,
                        quantidade: GetAliquotaInss(funcionario));

                    fichaFin.Evento = evento.Evento;
                    funcionario.FichaFinanceiraFuncionario.Add(fichaFin);
                }
            }

            //percorrendo eventos cadastrados para o funcionario
            foreach (var eventoFunc in funcionario.Funcionario.Eventos)
            {
                FichaFinanceiraFuncionario fichaFin = new FichaFinanceiraFuncionario(funcionario,
                                                                                     eventoFunc.Evento, eventoFunc.Valor, eventoFunc.Evento.TipoReferencia, dataRef, 0M);
                fichaFin.Evento = eventoFunc.Evento;
                funcionario.FichaFinanceiraFuncionario.Add(fichaFin);
            }

            return(funcionario.FichaFinanceiraFuncionario);
        }
示例#16
0
        public bool ExecutaCalculoFolha(DateTime periodo, object usuario, object tipoFechamento,
                                        object grupoEvento, bool considerGrpFunc, CancellationTokenSource cts)
        {
            using (var ctx = new BalcaoContext())
            {
                Usuario p_usuario = usuario as Usuario;
                TypeTipoFechamentoFolha p_tipoFechamento = tipoFechamento != null
                    ? (TypeTipoFechamentoFolha)tipoFechamento
                    : TypeTipoFechamentoFolha.Mensal;
                GrupoEvento p_grupoEvento = grupoEvento as GrupoEvento;

                try
                {
                    server.InsertLogTask(new LogIts(this.itsTask.IdTask, "Buscando funcionarios...."));
                    //busca os funcionarios que irão entrar no calculo da folha
                    var funcionariosFolha = ctx.FuncionarioDao.Where(f => (f.Situacao == TypeSituacaoFuncionario.Admitido ||
                                                                           f.Situacao == TypeSituacaoFuncionario.Ferias) &&
                                                                     f.DataAdmissao.Date <= periodo)
                                            .ToList();
                    //criando a competencia
                    var competencia = new CompetenciaFolha(DataUtil.GetDataFinalDoMes(periodo), p_usuario, p_tipoFechamento);

                    #region validacoes
                    if (funcionariosFolha.Count == 0)
                    {
                        throw new Exception("Não foram encontrados funcionários ativos na competência selecionada.");
                    }

                    //verifica se ja existe competencia com o mesmo periodo e periodicidade criada.
                    if (IsCompetenciaExistente(competencia))
                    {
                        throw new Exception("Competencia ja existente!");
                    }

                    if (p_grupoEvento.EventosGrupo.Count == 0)
                    {
                        throw new GrupoEventoVazio();
                    }

                    #endregion

                    //Adiciona um funcionario à competencia
                    server.InsertLogTask(new LogIts(this.itsTask.IdTask, "Adicionando funcionarios na competencia em criacao..."));
                    funcionariosFolha.ForEach(fu =>
                    {
                        competencia.FuncionariosCompetencia.Add(new FuncionarioCompetencia(fu)
                        {
                            Competencia = competencia
                        });
                    });

                    ICollection <FichaFinanceiraFuncionario> teste;

                    foreach (var funcComp in competencia.FuncionariosCompetencia.ToList())
                    {
                        //verifica se foi cancelada a cada passada no laço
                        VerificaSuspensao(cts.IsCancellationRequested);

                        GrupoEvento grupo;

                        if (considerGrpFunc && funcComp.Funcionario.GrupoDefault != null)
                        {
                            grupo = funcComp.Funcionario.GrupoDefault;
                        }
                        else
                        {
                            grupo = p_grupoEvento;
                        }

                        teste = GerarFichaFinanceira(funcComp, grupo, p_tipoFechamento);

                        teste.ToList().ForEach(ff => { funcComp.FichaFinanceiraFuncionario.Add(ff); });
                    }

                    //manipulacao do funcionarioCompetencia, dentro do .ForEach
                    foreach (var funcionario in competencia.FuncionariosCompetencia)
                    {
                        //verifica se foi cancelada a cada passada no laço
                        VerificaSuspensao(cts.IsCancellationRequested);

                        foreach (var ficha in funcionario.FichaFinanceiraFuncionario)
                        {
                            if (ficha.Evento.SomaBaseINSS)
                            {
                                funcionario.ValorBaseInss += ficha.ValorMovimento;
                            }
                            if (ficha.Evento.SomaBaseIRRF)
                            {
                                funcionario.ValorBaseIrrf += ficha.ValorMovimento;
                            }

                            funcionario.ValorAliquotaIrrf = GetAliquotaIrrf(funcionario);

                            //zera a referencia
                            ficha.Evento = null;
                        }
                    }
                    server.InsertLogTask(new LogIts(this.itsTask.IdTask, "Gravando dados...."));
                    var rt = ctx.CompetenciaFolhaDao.Save(competencia);
                    server.InsertLogTask(new LogIts(this.itsTask.IdTask, "Finalizando processo..."));
                    server.InsertLogTask(new LogIts(this.itsTask.IdTask, competencia.FuncionariosCompetencia.Count +
                                                    " funcionarios na competencia criada.."));

                    server.InsertLogTask(new LogIts(this.itsTask.IdTask, "Processo finalizado."));
                    return(rt);
                }
                catch (Exception ex)
                {
                    throw ex;

                    //XMessageIts.Advertencia(ex.Message);
                }
            }
        }
示例#17
0
 public void GravaSorteio(dbAlienContext dbContext, GrupoEvento vargrupoEvento, int cdEvento)
 {
     vargrupoEvento.CdEvento = cdEvento;
     dbContext.GrupoEvento.Update(vargrupoEvento);
     dbContext.SaveChanges();
 }