protected void CarregaEquipamento(int cd_Equipamento)
    {
        Equipamento equipamento = new Equipamento();

        equipamento  = EquipamentoOad.Get_Equipamento_By_Equipamento(cd_Equipamento);
        lblNome.Text = equipamento.Nm_Equipamento;
    }
        public virtual EquipamentoDto Criar(Guid siteId, Equipamento equipamento, long? dataReferenciaSituacao)
        {
            EquipamentoDto equipamentoResultante;
            switch (equipamento.Tipo)
            {
                case TipoEquipamento.Extintor:
                    equipamentoResultante = CriarExtintor(equipamento as Extintor);
                    break;
                case TipoEquipamento.Mangueira:
                    equipamentoResultante = CriarMangueira(equipamento as Mangueira);
                    break;
                case TipoEquipamento.CentralAlarme:
                    equipamentoResultante = CriarCentralAlarme(equipamento as CentralAlarme);
                    break;
                case TipoEquipamento.SistemaContraIncendioEmCoifa:
                    equipamentoResultante = CriarSistemaContraIncendioEmCoifa(equipamento as SistemaContraIncendioEmCoifa);
                    break;
                default:
                    throw new Exception("Equipamento não pode ser mapeado em um dto conforme seu tipo");
            }

            var cliente = _repositorioClientes.BuscarPorId(siteId, equipamentoResultante.ClienteId.ParaGuid());
            equipamentoResultante.ClienteNome = cliente != null ? cliente.Nome : string.Empty;
            equipamentoResultante.PartesParaManutencao = equipamento.ParametrosManutencao.Partes.Select(x => x.Nome).ToArray();

            equipamentoResultante.SituacaoManutencao = 
                (int)_calculadoraSituacaoManutencao.Calcular(equipamento, dataReferenciaSituacao ?? DateTime.Now.ParaUnixTime());

            return equipamentoResultante;
        }
        public async Task <IActionResult> Edit(int id, [Bind("EquipamentoId,CodEquipamento,CodAtivo,Nome,LinhaProdId")] Equipamento equipamento)
        {
            if (id != equipamento.EquipamentoId)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(equipamento);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!EquipamentoExists(equipamento.EquipamentoId))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            ViewData["LinhaProdId"] = new SelectList(_context.LinhaProd, "LinhaProdId", "CodLinha", equipamento.LinhaProdId);
            return(View(equipamento));
        }
Пример #4
0
        /// <summary>
        /// Mostra uma lista com todos os <see cref="Equipamento"/> cadastrados e pede pro usuario escolher um,
        /// depois o leva para o Menu principal dos Equipamentos
        /// <seealso cref="PrincipalEquipamento(Equipamento)"/>
        /// </summary>
        public void SelecaoEquipamento()
        {
            while (true)
            {
                Console.Clear();

                Equipamento[] equipamentos = listaEquipamentos.ListarEquipamentos();
                Console.WriteLine(GeradoresDeListaDeObjetos.GerarLista(equipamentos));

                Console.Write("Digite qual equipamento você deseja selecionar, ou digite 0 para voltar: ");
                int equipamentoId = Leitores.LerInt();

                if (equipamentoId == 0)
                {
                    break;
                }

                Equipamento equipamentoSelecionado = listaEquipamentos.ConsultarEquipamento(equipamentoId);

                if (equipamentoSelecionado != null)
                {
                    PrincipalEquipamento(equipamentoSelecionado);
                }
                else
                {
                    Ajudadores.ImprimirErro("Você selecionou um equipamento invalido");
                    Ajudadores.PausarConsole();
                }
            }
        }
Пример #5
0
        public async Task <IActionResult> Edit(int id, [Bind("EquipamentoId,Nome,Musculo,Imagem")] Equipamento equipamento)
        {
            if (id != equipamento.EquipamentoId)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(equipamento);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!EquipamentoExists(equipamento.EquipamentoId))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            return(View(equipamento));
        }
Пример #6
0
        private void AvancarProximoEvento(Simulador Sim)
        {
            Equipamento eq = GerarEquipamento(Sim);

            Sim.Equipamentos.Add(eq);

            if (Sim.Tecnicos.Where(x => x.Ocupado == false).Count() > 0)
            {
                var evento = new ProcederDiagnostico()
                {
                    Equipamento = eq,
                    Funcionario = Sim.Tecnicos.Where(x => x.Ocupado == false).FirstOrDefault(),
                    TempoEntradaEmFilaEspera = Sim.Contador.TempoAtual,
                    TempoEntrada             = Sim.Contador.TempoAtual
                };

                evento.AtualizarEstadoFuncionario(Sim.Tecnicos.ToList(), true);
                Sim.ListaEventos.Add(evento);
            }
            else
            {
                var evento = new ProcederDiagnostico()
                {
                    Equipamento = eq,
                    TempoEntradaEmFilaEspera = Sim.Contador.TempoAtual
                };
                Sim.ListaEsperaProcederDiagnostico.Add(evento);
            }
        }
        public HttpResponseMessage CadastrarEquipamento([FromBody] EquipamentoModel request)
        {
            if (request == null)
            {
                return(BadRequest($"O parametro {nameof(request)} não pode ser null"));
            }

            List <Gaveta> gavetasPedidas = contexto.Gavetas.Include(x => x.Rack)
                                           .Where(x => request.GavetasId.Contains(x.Id))
                                           .OrderBy(x => x.Posicao).ToList();

            if (gavetasPedidas.Count() != request.Tamanho)
            {
                return(BadRequest("A quantidade de gavetas encontradas não é igual ao tamanho do equipamento."));
            }

            if (gavetasPedidas.Any(x => x.Ocupado == true))
            {
                return(BadRequest("Gaveta(s) ocupada(s)."));
            }

            if (gavetasPedidas.Any(x => x.Rack.Id != gavetasPedidas[0].Rack.Id))
            {
                return(BadRequest("As gavetas não são do mesmo rack."));
            }

            for (int i = 0; i < gavetasPedidas.Count() - 1; i++)
            {
                if (gavetasPedidas[i].Posicao > gavetasPedidas[i + 1].Posicao)
                {
                    return(BadRequest("As gavetas pedidas não são consecutivas."));
                }
            }

            int  idRack = gavetasPedidas[0].Rack.Id;
            Rack rack   = contexto.Racks.FirstOrDefault(x => x.Id == idRack);

            if (rack.Tensao != request.Tensao)
            {
                return(BadRequest("O rack não tem a mesma tensão do equipamento."));
            }

            Equipamento equipamento = CreateEquipamento(request.Descricao, request.Tamanho, request.Tensao);

            if (equipamento.Validar())
            {
                contexto.Equipamentos.Add(equipamento);
                foreach (Gaveta gaveta in gavetasPedidas)
                {
                    gaveta.Ocupado     = true;
                    gaveta.Equipamento = equipamento;
                }
                contexto.SaveChanges();

                return(Ok(equipamento));
            }

            return(BadRequest(equipamento.Mensagens));
        }
        public Equipamento[] SelecionarTodosEquipamentos()
        {
            Equipamento[] equipamentosAux = new Equipamento[QtdRegistrosCadastrados()];

            Array.Copy(SelecionarTodosRegistros(), equipamentosAux, equipamentosAux.Length);

            return(equipamentosAux);
        }
        public Equipamento EditEquipamento(Equipamento equipamento)
        {
            var equipamentoExistente = GetEquipamento(equipamento.Id);

            equipamentoExistente.Nome = equipamento.Nome;
            equipamentoExistente.Tipo = equipamento.Tipo;
            return(equipamentoExistente);
        }
Пример #10
0
        public async Task <Equipamento> Post(Equipamento equipamento)
        {
            await context.Equipamento.AddAsync(equipamento);

            await context.SaveChangesAsync();

            return(equipamento);
        }
        public ActionResult DeleteConfirmed(int id)
        {
            Equipamento equipamento = db.Equipamento.Find(id);

            db.Equipamento.Remove(equipamento);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
        private Equipamento MontarEquipamento()
        {
            var equipamento = new Equipamento();

            equipamento.ArmaPrimaria = MontarEspadaIniciante();

            return(equipamento);
        }
 public Equipamento getEquipamento()
 {
     if (equipamento == null)
     {
         equipamento = new Equipamento();
     }
     return(equipamento);
 }
        //criar equipamento
        private void btn_ce_Click(object sender, EventArgs e)
        {
            if (player != null)
            {
                try {
                    float             dfisico, draio, dfogo, dveneno;
                    List <Influencia> influencia = new List <Influencia>()
                    {
                        Influencia.Forca,
                        Influencia.Destreza,
                        Influencia.Vigor,
                        Influencia.Resistencia
                    };

                    CheckBox[] check = new CheckBox[4] {
                        cb_f,
                        cb_d,
                        cb_v,
                        cb_r
                    };

                    Classe classe =
                        r_A.Checked? Classe.A :
                        r_B.Checked? Classe.B :
                        r_C.Checked? Classe.C :
                        r_D.Checked? Classe.D :
                        r_E.Checked? Classe.E :
                        Classe.E;

                    string tipo = cbo_de.SelectedItem.ToString();

                    for (int i = 0; i < check.Length; i++)
                    {
                        if (!check[i].Checked)
                        {
                            influencia.RemoveAt(i);
                        }
                    }

                    float.TryParse(txt_df.Text.ToString(), out dfisico);
                    float.TryParse(txt_dr.Text.ToString(), out draio);
                    float.TryParse(txt_dfg.Text.ToString(), out dfogo);
                    float.TryParse(txt_dv.Text.ToString(), out dveneno);

                    //atualizar equipamento.influencias depois de criar

                    equipamento = new Equipamento(dfisico, draio, dfogo, dveneno, influencia, classe, tipo);

                    Resultado r = new Resultado(equipamento);
                } catch (Exception ex) {
                    MessageBox.Show("Erro Ao criar Equipamento : \n" + ex.Message);
                }
            }
            else
            {
                MessageBox.Show("Primeiro Crie o Player", "Exceção", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }
        }
Пример #15
0
        public async Task <Equipamento> Cadastrar(Equipamento equipamento)
        {
            equipamento.DataCadastro = DateTime.Now;

            context.Equipamentos.Add(equipamento);
            await context.SaveChangesAsync();

            return(equipamento);
        }
 public void Carregar()
 {
     tabela[1] = new Equipamento("Pistola e Helmo", "Distancia", 4, 1);
     tabela[2] = new Equipamento("Duas Pistolas", "Distancia", 4, 0);
     tabela[3] = new Equipamento("Três Galinhas Explosivas", "Distancia", 4, 0);
     tabela[4] = new Equipamento("Barril de Polvora", "Dano em todos até 3m", 5, 0);
     tabela[5] = new Equipamento("Pistola e duas Galinhas Explosivas", "Distancia", 4, 1);
     tabela[6] = new Equipamento("Canhão", "Carregar[2 Turnos]", 8, 0);
 }
 public void Carregar()
 {
     tabela[1] = new Equipamento("Duas Adagas", "", 2, 0);
     tabela[2] = new Equipamento("Uma adaga e um escudo", "", 2, 1);
     tabela[3] = new Equipamento("Arco Simples", "Distancia", 2, 0);
     tabela[4] = new Equipamento("Arco Composto", "Distancia", 3, 0);
     tabela[5] = new Equipamento("Quatro Adagas", "", 2, 0);
     tabela[6] = new Equipamento("Besta e Helmo", "Distancia", 3, 1);
 }
 public void Carregar()
 {
     tabela[1] = new Equipamento("Espada e Escudo", "", 3, 1);
     tabela[2] = new Equipamento("Machado e Helmo", "", 4, 1);
     tabela[3] = new Equipamento("Duas Machadinhas", "", 3, 0);
     tabela[4] = new Equipamento("Espadona", "", 5, 0);
     tabela[5] = new Equipamento("Duas Espadas e Armadura", "", 3, 1);
     tabela[6] = new Equipamento("Adaga, Espada e Armadura", "Adaga(Dano 2), Espada(Dano 3)", 3, 1);
 }
Пример #19
0
 static void Main(string[] args)
 {
     #region Files
     //const string fileAuditorias = "auditoriasFile.bin";
     //const string fileVulnerabilidades = "vulnerabilidadesFile.bin";
     //const string fileColaboradores = "colaboradoresFile.bin";
     //const string fileEquipamentos = "equipamentosFile.bin";
     #endregion
     //RN.Load(fileAuditorias, fileVulnerabilidades, fileColaboradores, fileEquipamentos);
     #region Main
     Colaborador     jose        = new Colaborador("Jose");
     Colaborador     pedro       = new Colaborador("Pedro");
     Colaborador     luis        = new Colaborador("Luis");
     Equipamento     asusZenbook = new Equipamento("pc", "asus", "zenbook", "25/04/2000");
     Equipamento     hpElitebook = new Equipamento("pc", "hp", "elitebook", "01/04/2000");
     Vulnerabilidade va          = new Vulnerabilidade("falha na rede", Vulnerabilidade.Level.ELEVADO);
     Vulnerabilidade vb          = new Vulnerabilidade("cabo rasgado", Vulnerabilidade.Level.BAIXO);
     Vulnerabilidade vc          = new Vulnerabilidade("falha eletrica", Vulnerabilidade.Level.MODERADO);
     Auditoria       b           = new Auditoria(20, pedro, "21/06/2000");
     Auditoria       c           = new Auditoria(45, jose, "22/06/2000");
     Auditoria       a           = new Auditoria(15, jose, "20/06/2000");
     RN.InsereAuditoria(a);
     RN.InsereAuditoria(b);
     RN.InsereAuditoria(c);
     RN.InsereColaborador(jose);
     RN.InsereColaborador(pedro);
     RN.InsereColaborador(luis);
     RN.InsereVulnerabilidade(va);
     RN.InsereVulnerabilidade(vb);
     RN.InsereVulnerabilidade(vc);
     RN.InsereEquipamento(asusZenbook);
     RN.InsereEquipamento(hpElitebook);
     RN.InsereVulnerabilidadeAuditoria(b, vb);
     RN.InsereVulnerabilidadeAuditoria(c, va);
     RN.InsereVulnerabilidadeAuditoria(c, vc);
     RN.InsereVulnerabilidadeAuditoria(a, va);
     RN.InsereVulnerabilidadeAuditoria(a, vb);
     RN.InsereVulnerabilidadeAuditoria(a, vc);
     RN.InsereColaboradorAuditoria(a, jose);
     RN.InsereColaboradorAuditoria(b, pedro);
     RN.InsereColaboradorAuditoria(c, jose);
     RN.InsereVulnerabilidadeEquipamento(va, asusZenbook);
     RN.InsereVulnerabilidadeEquipamento(vc, asusZenbook);
     RN.InsereVulnerabilidadeEquipamento(vb, hpElitebook);
     RN.InsereVulnerabilidadeEquipamento(vc, hpElitebook);
     #endregion
     //RN.Save(fileAuditorias,fileVulnerabilidades,fileColaboradores,fileEquipamentos);
     RN.ApresentarDados();
     Console.ReadKey();
     ///Teste de alguns metodos de manipulação do programa
     /// > Resolver a vulnerabilidade (va)
     /// > Altera o estado do colaborador Luis para INATIVO
     RN.ResolveVulnerabilidade(va);
     RN.ResolveColaborador(luis);
     RN.ApresentarDados();
     Console.ReadKey();
 }
Пример #20
0
    public float calculoDeTempoDeConstrucaoDeEquipamento(Equipamento equipamentoConstruido)
    {
        int tempoAlevar = 0;//Quantos minutos vai terminar para criar esse equipamento

        if (equipamentoConstruido == null)
        {
            return(30);
        }

        switch (equipamentoConstruido.tipoDeEquipamento)
        {
        case EquipamentoTipo.AntiTanque:
        case EquipamentoTipo.LancaChamas:
            tempoAlevar += 30;
            break;

        case EquipamentoTipo.Pistola:
        case EquipamentoTipo.Rifle:
            tempoAlevar += 15;
            break;

        case EquipamentoTipo.RifleDeAssalto:
            tempoAlevar += 45;
            break;

        case EquipamentoTipo.TanqueLeve: tempoAlevar += 40; break;

        case EquipamentoTipo.TanqueMedio: tempoAlevar += 60; break;

        case EquipamentoTipo.TanquePesado: tempoAlevar += 80; break;

        case EquipamentoTipo.TanqueUltraPesado: tempoAlevar += 100; break;

        case EquipamentoTipo.EquipamentosMotorizados: tempoAlevar += 40; break;

        case EquipamentoTipo.EquipamentosMecanizados: tempoAlevar += 60; break;

        case EquipamentoTipo.Artilharia: tempoAlevar += 40; break;

        case EquipamentoTipo.ArtilhariaFoguete: tempoAlevar += 40; break;

        case EquipamentoTipo.ArtilhariaSP:
        case EquipamentoTipo.AntiTanqueSP:
        case EquipamentoTipo.ArtilhariaFogueteSP:
            tempoAlevar += 80;
            break;


        case EquipamentoTipo.SubMetralhadora:
        case EquipamentoTipo.Metralhadora:
        case EquipamentoTipo.Escopeta:
            tempoAlevar += 30;
            break;
        }
        return(tempoAlevar *= equipamentoConstruido.raridade);
    }
        public IActionResult AddEquipamento(Equipamento equipamento)
        {
            _equipamentoData.AddEquipamento(equipamento);

            return(Created(
                       HttpContext.Request.Scheme + "://" +
                       HttpContext.Request.Host +
                       HttpContext.Request.Path + "/" +
                       equipamento.Id, equipamento));
        }
 public ActionResult Create(Equipamento equipamento)
 {
     if (ModelState.IsValid)
     {
         _ERE.Inserir(equipamento);
         return RedirectToAction("Index");
     }
     ViewBag.Marca = _MRE.Listar();//Vai preencher o DropList na View novamente caso dê erro na validação
     return View(equipamento);
 }
Пример #23
0
        public async Task <ActionResult <Equipamento> > Getid(int id)
        {
            Equipamento equipamentoRetornado = await repositorio.Get(id);

            if (equipamentoRetornado == null)
            {
                return(NotFound());
            }
            return(equipamentoRetornado);
        }
 public ActionResult Edit([Bind(Include = "EquipamentoId,EquipamentoNome,Serie")] Equipamento equipamento)
 {
     if (ModelState.IsValid)
     {
         db.Entry(equipamento).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     return(View(equipamento));
 }
Пример #25
0
 public EquipamentoViewModel ToViewModel(Equipamento equipamento)
 {
     return(new EquipamentoViewModel
     {
         Id = equipamento.Id,
         DataInsercao = equipamento.DataInsercao,
         Codigo = equipamento.Codigo,
         Descricao = equipamento.Descricao
     });
 }
Пример #26
0
        public EquipamentoViewModel(Equipamento obj)
        {
            if (obj == null)
            {
                return;
            }

            Id        = obj.Id;
            Descricao = obj.Descricao;
        }
Пример #27
0
        public async Task <bool> CadastrarAsync(Equipamento equipamento)
        {
            HttpResponseMessage Res = await Initialize().PostAsJsonAsync("api/Equipamentos", equipamento);

            if (Res.IsSuccessStatusCode)
            {
                return(true);
            }
            return(false);
        }
Пример #28
0
        public async Task <bool> AtualizarAsync(Equipamento equipamento, int id)
        {
            HttpResponseMessage Res = await Initialize().PutAsJsonAsync($"api/Equipamentos/{id}", equipamento);

            if (Res.IsSuccessStatusCode)
            {
                return(true);
            }
            return(false);
        }
Пример #29
0
 public Classe(string nome, string especial, int combate, int conhecimento, int habilidade, int sorte)     //Exclusivo para Xamã
 {
     this.nome         = nome;
     this.combate      = combate;
     this.conhecimento = conhecimento;
     this.habilidade   = habilidade;
     this.sorte        = sorte;
     this.especial     = especial;
     equip             = new Equipamento("Cajado", "Você começa com 8 pontos de magia", 1, 0);
 }
        public HttpResponseMessage MoverEquipamento([FromUri] int idRack, int idEquipamento)
        {
            if (contexto.Equipamentos.Where(x => x.Id == idEquipamento).Count() == 0)
            {
                return(BadRequest("Equipamento não encontrado."));
            }
            Equipamento equipamento = contexto.Equipamentos.Include(x => x.Gavetas).FirstOrDefault(x => x.Id == idEquipamento);

            if (contexto.Racks.Where(x => x.Id == idRack).Count() == 0)
            {
                return(BadRequest("Rack não encontrado."));
            }

            Rack          novoRack = contexto.Racks.FirstOrDefault(x => x.Id == idRack);
            List <Gaveta> gavetas  = contexto.Gavetas.OrderBy(x => x.Posicao).Where(x => x.Rack.Id == novoRack.Id && !x.Ocupado).ToList();

            if (gavetas.Count()
                < equipamento.Tamanho)
            {
                return(BadRequest("Não há espaço no Rack."));
            }

            List <Gaveta> gavetasSelecionadas = new List <Gaveta>();

            foreach (Gaveta g in gavetas)
            {
                // Se a próxima gaveta tem a posição consecutiva em relação a anterior, adiciona a gaveta às gavetas selecionadas
                if (gavetasSelecionadas.Count() == 0 || gavetasSelecionadas.ElementAt(gavetasSelecionadas.Count() - 1).Posicao + 1 == g.Posicao)
                {
                    gavetasSelecionadas.Add(g);
                }
                // Se não, limpa as gavetas selecionadas e recomeça
                else
                {
                    gavetasSelecionadas.Clear();
                    gavetasSelecionadas.Add(g);
                }

                // Se as gavetas selecionadas forem do tamanho correto, termina o For e retorna o resultado
                if (gavetasSelecionadas.Count() == equipamento.Tamanho)
                {
                    List <Gaveta> gavetaAntigas = contexto.Gavetas.Include(x => x.Equipamento).Where(x => x.Equipamento.Id == equipamento.Id).ToList();
                    gavetaAntigas.ForEach(x => { x.Equipamento = null; x.Ocupado = false; });

                    equipamento.Gavetas = gavetasSelecionadas;
                    gavetasSelecionadas.ForEach(x => { x.Equipamento = equipamento; x.Ocupado = true; });

                    contexto.SaveChanges();

                    return(Ok(equipamento));
                }
            }

            return(BadRequest("Não existem gavetas consecutivas no rack para alocar o equipamento."));
        }
Пример #31
0
        /// <summary>
        /// Lista os emprestimos conforme parametros escolhidos pelo operador
        /// </summary>
        /// <param name="idUsuario">Usuario que esta cadastrado o emprestimo</param>
        /// <param name="idOperador">Operador que fez os emprestimos</param>
        /// <param name="dataInicio">Data de criação - a partir de</param>
        /// <param name="dataFim">Data de criação - até</param>
        /// <param name="dataPrevistaDevolucaoInicio">Data Previsão da devolução - a partir de</param>
        /// <param name="dataPrevistaDevolucaoFim">Data Previsão da devolução - até</param>
        /// <param name="idEquipamento">Equipamento</param>
        /// <returns>Lista conforme parametros para exibir</returns>
        public static List <Emprestimo> ListarComParametros(int?idUsuario, int?idOperador, DateTime?dataInicio, DateTime?dataFim,
                                                            DateTime?dataPrevistaDevolucaoInicio, DateTime?dataPrevistaDevolucaoFim, int?idEquipamento, bool atrasadosApenas, bool excluiFinalizados)
        {
            if (dataFim == null)
            {
                dataFim = DateTime.Now;
            }

            List <Emprestimo> lista = ctx.Emprestimos.Include("Equipamentos").Include("Usuario").Include("Operador").Where(c => c.DataEmprestimo <= dataFim).ToList();

            if (atrasadosApenas)
            {
                lista = lista.Where(a => a.DataPrevistaDevolucao < DateTime.Now).ToList();
            }

            if (excluiFinalizados)
            {
                lista = lista.Where(f => !f.StatusDoEmprestimo).ToList();
            }

            if (dataInicio != null)
            {
                lista = lista.Where(c => c.DataEmprestimo >= dataInicio).ToList();
            }

            if (dataPrevistaDevolucaoInicio != null)
            {
                lista = lista.Where(c => c.DataPrevistaDevolucao >= dataPrevistaDevolucaoInicio).ToList();
            }

            if (dataPrevistaDevolucaoFim != null)
            {
                lista = lista.Where(c => c.DataPrevistaDevolucao <= dataPrevistaDevolucaoFim).ToList();
            }

            if (idEquipamento != null)
            {
                Equipamento equipamento = ctx.Equipamentos.Find(idEquipamento);
                lista = lista.FindAll(c => c.Equipamentos.Contains(equipamento)).ToList();
            }

            if (idUsuario != null)
            {
                Pessoa pessoaUsuario = ctx.Pessoas.Find(idUsuario);
                lista = lista.Where(c => c.Usuario == pessoaUsuario).ToList();
            }

            if (idOperador != null)
            {
                Pessoa pessoaOperador = ctx.Pessoas.Find(idOperador);
                lista = lista.Where(c => c.Operador == pessoaOperador).ToList();
            }

            return(lista);
        }
        public static ParametrosManutencao Criar(Equipamento equipamento)
        {
            if (equipamento.Tipo == TipoEquipamento.Extintor)
                return new ParametrosManutencaoExtintor(((Extintor)equipamento).FabricadoEm);
            if (equipamento.Tipo == TipoEquipamento.Mangueira)
                return new ParametrosManutencaoMangueira();
            if (equipamento.Tipo == TipoEquipamento.CentralAlarme)
                return new ParametrosManutencaoCentralAlarme();
            if (equipamento.Tipo == TipoEquipamento.SistemaContraIncendioEmCoifa)
                return new ParametrosManutencaoSistemaContraIncendioEmCoifa();

            throw new Exception("Não existe parâmetros para o tipo especificado");
        }
        public SituacaoManutencao Calcular(Equipamento equipamento, long dataReferencia)
        {
            var parametrosManutencao = equipamento.ParametrosManutencao;
            var manutencoes = equipamento.Manutencoes; 

            if (!parametrosManutencao.ControladaPelasPartes)
                return SituacaoManutencao.Ok;

            if (manutencoes == null || manutencoes.Count == 0)
            {
                if (parametrosManutencao.UtilizaDataBaseParaPrimeiraMenutencao)
                    manutencoes = new List<Manutencao>{ new Manutencao(parametrosManutencao.DataBasePrimeiraManutencao, parametrosManutencao.Partes.First().Nome) };
                else
                    return SituacaoManutencao.Inconclusivo;
            }

            foreach (var parte in parametrosManutencao.Partes)
            {
                var nomeParte = parte.Nome;
                var periodoParaManutencaoEmMeses = parte.PeriodoParaManutencaoEmMeses ?? 0;
                var ultimaManutencao = manutencoes.Where(x => x.Parte.Equals(nomeParte)).OrderByDescending(x => x.Data).FirstOrDefault();

                if (ultimaManutencao == null)
                    continue;

                //"-2" porque vai começar a "alarmar" dois meses antes do período de manutenção
                var dataLimiteSemAvisos = ultimaManutencao.Data.APartirDeUnixTime().AddMonths(periodoParaManutencaoEmMeses - 2);

                if (dataReferencia.APartirDeUnixTime().Date >= dataLimiteSemAvisos.AddMonths(1) ||
                    dataReferencia.APartirDeUnixTime().Date >= dataLimiteSemAvisos.AddMonths(2).PrimeiroDiaDoMes())
                    return SituacaoManutencao.EstadoCritico;

                if (dataReferencia.APartirDeUnixTime().Date >= dataLimiteSemAvisos.AddDays(1) &&
                    dataReferencia.APartirDeUnixTime().Date <= dataLimiteSemAvisos.AddMonths(1).UltimoDiaDoMes())
                    return SituacaoManutencao.EstadoDeAtencao;
            }

            return SituacaoManutencao.Ok;
        }
        public virtual void Editar(Equipamento equipamento)
        {
            var colecao = MongoDatabase.GetCollection<Equipamento>(NomeColecao);
            colecao.ReplaceOne(Builders<Equipamento>.Filter.Eq(x => x.Id, equipamento.Id), equipamento);

        }
 public SituacaoManutencao Calcular(Equipamento equipamento)
 {
     return Calcular(equipamento, DateTime.Now.ParaUnixTime());
 }
 public virtual EquipamentoDto Criar(Guid siteId, Equipamento equipamento)
 {
     return Criar(siteId, equipamento, DateTime.Now.ParaUnixTime());
 }
 public void InserirManutencao(Equipamento equipamento, Manutencao manutencao)
 {
     var colecao = MongoDatabase.GetCollection<Equipamento>(NomeColecao);
     colecao.FindOneAndUpdate(Builders<Equipamento>.Filter.Eq(x => x.Id, equipamento.Id), 
         Builders<Equipamento>.Update.AddToSet(x => x.Manutencoes, manutencao));
 }
 public void Inserir(Equipamento equipamento)
 {
     var colecao = MongoDatabase.GetCollection<Equipamento>(NomeColecao);
     colecao.InsertOne(equipamento);
 }