public static UnidadeVagaVM ToUnidadeVagaVM(this VagaRemocao model, Funcionario funcionario = null)
        {
            var vm = model.Unidade.ConvertTo <UnidadeVagaVM>();

            vm.Endereco      = model.Unidade.Endereco.EnderecoCompleto;
            vm.Latitude      = model.Unidade.Endereco.Latitude;
            vm.Longitude     = model.Unidade.Endereco.Longitude;
            vm.Tipo          = model.Unidade.TipoUnidade.Tipo;
            vm.TipoDescricao = model.Unidade.TipoUnidade.Descricao;
            vm.Vagas         = model.Vagas;

            if (model.Unidade.Endereco.Latitude.HasValue && model.Unidade.Endereco.Longitude.HasValue &&
                funcionario != null && funcionario.Latitude.HasValue && funcionario.Longitude.HasValue)
            {
                vm.Distancia = Math.Acos(
                    Math.Sin(model.Unidade.Endereco.Latitude.Value.ToRadians()) * Math.Sin(funcionario.Latitude.Value.ToRadians())
                    + Math.Cos(model.Unidade.Endereco.Latitude.Value.ToRadians()) * Math.Cos(funcionario.Latitude.Value.ToRadians())
                    * Math.Cos(model.Unidade.Endereco.Longitude.Value.ToRadians() - funcionario.Longitude.Value.ToRadians())
                    ) * 6378;
            }

            return(vm);
        }
Exemplo n.º 2
0
        private void AtualizarVagas(int mes, int ano)
        {
            var cargos = _vagas.Select(a => (int)a.Tag);

            var vagasRemocao = _vagaDomain.Get()
                               .Where(a => cargos.Contains(a.CargoId) &&
                                      a.UnidadeId == _unidadeId &&
                                      a.Data.Year == ano &&
                                      a.Data.Month == mes);

            foreach (var vagaView in _vagas)
            {
                var cargoId = (int)vagaView.Tag;
                var vagas   = (int)vagaView.Value;

                var vagaRemocao = vagasRemocao.SingleOrDefault(a => a.CargoId == cargoId);

                if (vagaRemocao != null)
                {
                    vagaRemocao.Vagas = vagas;
                }
                else
                {
                    vagaRemocao = new VagaRemocao
                    {
                        CargoId   = cargoId,
                        Data      = DateTime.Now.Date,
                        UnidadeId = _unidadeId,
                        Vagas     = vagas
                    };
                }

                vagaView.Value = 0;
                _vagaDomain.Save(vagaRemocao);
            }
        }
Exemplo n.º 3
0
        /// <summary>
        /// Teste e extracao de lista de vagas
        /// Apos ser realizado o teste deve ser verificado o txt negativo para corrigir se possivel
        /// as linhas nao processadas como vaga
        /// </summary>
        /// <returns></returns>
        static IEnumerable <VagaRemocao> TestarTxtFinal()
        {
            ICollection <VagaRemocao> vagasList = new List <VagaRemocao>();

            string unidade   = null;
            var    unidadeId = 0;

            var          linha       = 0;
            var          valor       = "";
            StreamWriter txtNegativo = new StreamWriter("resultado_negativo.txt", false);
            StreamWriter txtPositivo = new StreamWriter("resultado_positivo.txt", false);

            Console.ForegroundColor = ConsoleColor.Blue;
            while ((valor = _vagasTxt.ReadLine()) != null)
            {
                Console.WriteLine("Testando e reunindo vagas...");
                Console.WriteLine($"Linha {linha} esta sendo analisada...");


                linha++;
                var unidadePair = _unidadeDoDictionary.SingleOrDefault(a => a.Value == valor);

                if (unidadeId == 0 || !valor.StartsWithNumber(5))
                {
                    unidade   = null; //se == 0 continua vazio, porem se nao for cargo e esta preenhido deve ser zerado
                    unidadeId = 0;    //pois quer dizer que ja foi lido os cargos da ultima unidade e agora estamos em outra

                    if (unidadePair.Equals(default(KeyValuePair <int, string>)))
                    {
                        txtNegativo.WriteLine($"{linha}    {valor} - Unidade");
                        continue;
                    }

                    unidadeId = unidadePair.Key;
                    unidade   = unidadePair.Value;
                    txtPositivo.WriteLine($"{linha}     {valor}");
                    continue;
                }

                var codigoCargo = valor.Substring(0, 5);

                if (codigoCargo == null)
                {
                    txtNegativo.WriteLine($"{linha}     {valor} - CodigoCargo");
                    continue;
                }

                var cargo = _cargos.SingleOrDefault(a => a.Codigo == codigoCargo);

                if (cargo == null)
                {
                    txtNegativo.WriteLine($"{linha}     {valor} - Cargo");
                    continue;
                }

                var arraySplit = valor.Split(' ');

                if (arraySplit.Length == 0)
                {
                    txtNegativo.WriteLine($"{linha}     {valor} - Split Vagas");
                    continue;
                }

                var stringVagasP = arraySplit.Last();
                var stringVagas  = arraySplit[arraySplit.Length - 2];

                int vagas;
                int vagasP;

                if (!int.TryParse(stringVagas, out vagas) || !int.TryParse(stringVagasP, out vagasP))
                {
                    txtNegativo.WriteLine($"{linha}     {stringVagas}   {stringVagasP} - Vagas");
                    continue;
                }

                if (vagasList.Any(a => a.CargoId == cargo.Id && a.UnidadeId == unidadeId && a.Vagas == vagas && a.VagasPotenciais == vagasP))
                {
                    txtNegativo.WriteLine($"{linha}     {unidadeId}-{unidade}--{cargo.Id}-{cargo.Abreviacao}--{vagas}--{vagasP} - VAGA REPETIDA");
                    continue;
                }

                var vagaRemocao = _unidades.SingleOrDefault(a => a.CargoId == cargo.Id && a.UnidadeId == unidadeId && a.Data.Year == (DateTime.Now.Year + 1));
                if (vagaRemocao == null)
                {
                    vagaRemocao = new VagaRemocao {
                        CargoId = cargo.Id, UnidadeId = unidadeId
                    };
                }

                vagaRemocao.Vagas           = vagas == 0 ? vagasP : vagas + vagasP;
                vagaRemocao.VagasIniciais   = vagas;
                vagaRemocao.VagasPotenciais = vagasP;
                vagaRemocao.Data            = DateTime.Now.Date.AddYears(1);
                vagasList.Add(vagaRemocao);

                txtPositivo.WriteLine($"{linha}     {cargo.Id}-{cargo.Abreviacao}-{vagas}-{vagasP}");
                //Console.Clear();
            }

            _vagasTxt.Close();
            txtNegativo.Close();
            txtPositivo.Close();
            Console.Clear();
            Console.ForegroundColor = ConsoleColor.Red;
            Console.WriteLine("Vagas coletadas");
            return(vagasList);
        }