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