public FileContentResult GetFile()
        {
            var dictValue = new Dictionary<string, string>();
              dictValue.Add("ITEM", "1");
              dictValue.Add("DESCRICAO", "Descricao dos Manos");
              dictValue.Add("NUMEROPECA", "NUMERO PECA LOKS");
              //var a = new CTMStorageService().GetDocumentoPreenchido("MUP-028 SEGVOO 004.docx", dictValue);
              var b = new CTMStorageService().GetDocumentoPreenchidoAzure("MUP-028 SEGVOO 004.docx", dictValue);

              byte[] file = new byte[10];
              return new FileContentResult(b, "application/vnd.openxmlformats-officedocument.wordprocessingml.document");
        }
        public FileResult DownloadInspecaoRecebimento(int idCTM)
        {
            CTM ctm = CTMService.getCTM(idCTM);

              Clientes cliente = ClienteService.getCliente(ctm.IDCliente);
              Equipamentos equipamento = EquipamentoService.getEquipamento(ctm.IDEquipamento);

              CtmFirc ctmFirc = CTMFircService.get(null, idCTM);
              CtmOrdemServico ordemServico = CTMOrdemServicoService.getCTMOrdemServicoByCTM(idCTM);
              var dictValue = new Dictionary<string, string>();

              dictValue.Add("PRODUTO", equipamento.Descricao);
              dictValue.Add("PN", ctm.PartNumber);
              dictValue.Add("SN", ctm.SerialNumber);
              dictValue.Add("FABRICANTE", equipamento.Fabricante);
              dictValue.Add("OSN", ordemServico != null ? ordemServico.IDCTMOrdemServico.ToString() : "");

              if (ctmFirc != null) {

            //dictValue.Add("DATA", ctmFirc.Data.Value.ToShortDateString());
            dictValue.Add("CMM", ctmFirc.CMM);
            dictValue.Add("REV", ctmFirc.NumeroRevisao);
            dictValue.Add("G1", returnXOREmpty(ctmFirc.Garantia));
            dictValue.Add("G0", returnXOREmpty(!ctmFirc.Garantia));
            dictValue.Add("C1", returnXOREmpty(ctmFirc.Conforme));
            dictValue.Add("C0", returnXOREmpty(!ctmFirc.Conforme));

            dictValue.Add("D1", returnXOREmpty(ctmFirc.DocumentosCumpridos));
            dictValue.Add("D0", returnXOREmpty(!ctmFirc.DocumentosCumpridos));

            dictValue.Add("DOCN", ctmFirc.NumeroDocumentoNaoCumprido);
            dictValue.Add("INSPETOR", ctmFirc.InspetorRecebimento);

            dictValue.Add("FALHASMAUFUNC", ctmFirc.RelatoriosFalhasMauFunc);
            dictValue.Add("TESTEFUNC", ctmFirc.TesteFuncional);
            dictValue.Add("DISCREAPOS", ctmFirc.DiscrepanciasAposMontagem);

            dictValue.Add("I1", returnXOREmpty(ctmFirc.InspecaoFalhasOcultas));
            dictValue.Add("I0", returnXOREmpty(!ctmFirc.InspecaoFalhasOcultas));
            dictValue.Add("DATA", DateTime.Now.ToShortDateString());
              }

              var b = new CTMStorageService().GetDocumentoPreenchidoAzure("MUP-009 FICHA DE INSPEÇÃO DE RECEBIMENTO E CONTINUADA - FIRC.docx", dictValue);

              var fileResult = new FileContentResult(b, "application/vnd.openxmlformats-officedocument.wordprocessingml.document");
              fileResult.FileDownloadName = "MUP-009 FICHA DE INSPEÇÃO DE RECEBIMENTO E CONTINUADA - FIRC.docx";
              return fileResult;
        }
        public FileResult DownloadSegVoo(int idCTM)
        {
            CTM ctm = CTMService.getCTM(idCTM);

              Clientes cliente = ClienteService.getCliente(ctm.IDCliente);
              Equipamentos equipamento = EquipamentoService.getEquipamento(ctm.IDEquipamento);

              CtmSegVoo segVoo = CTMSegVooService.get(null, idCTM);
              CtmOrdemServico ordemServico = CTMOrdemServicoService.getCTMOrdemServicoByCTM(idCTM);
              var dictValue = new Dictionary<string, string>();

              dictValue.Add("ITEM", "1");
              dictValue.Add("DESCRICAO", equipamento.Descricao);
              dictValue.Add("NUMEROPECA", ctm.PartNumber);
              dictValue.Add("QTDE", "1");
              dictValue.Add("NUMSERIELOTE", ctm.SerialNumber);
              dictValue.Add("ORDEMSERVICO", ordemServico != null ? ordemServico.IDCTMOrdemServico.ToString() : "");

              if (segVoo != null) {

            dictValue.Add("CERTIFN", String.Format("MUP-{0}/{1}", segVoo.IDCTMSegVoo.ToString().PadLeft(4, '0'), DateTime.Now.Year.ToString().Substring(2)));
            dictValue.Add("APLICABILIDADE", segVoo.Aplicabilidade);
            dictValue.Add("OBS", segVoo.Observacao);
            dictValue.Add("DATA", segVoo.DataFechamento.Value.ToShortDateString());
            dictValue.Add("C1", returnXOREmpty(segVoo.Reparo));
            dictValue.Add("C2", returnXOREmpty(segVoo.Teste));
            dictValue.Add("C3", returnXOREmpty(segVoo.RevisaoGeral));
            dictValue.Add("C4", returnXOREmpty(segVoo.Other));
            dictValue.Add("NOMEINSPETOR", segVoo.NomeInspetorDesignado);
              }

              var b = new CTMStorageService().GetDocumentoPreenchidoAzure("MUP-028 SEGVOO 003.docx", dictValue);

              var fileResult = new FileContentResult(b, "application/vnd.openxmlformats-officedocument.wordprocessingml.document");
              fileResult.FileDownloadName = "MUP-028 SEGVOO 003.docx";
              return fileResult;
        }
        public FileResult DownloadOrdemServico(int idCTM)
        {
            CTM ctm = CTMService.getCTM(idCTM);

              Clientes cliente = ClienteService.getCliente(ctm.IDCliente);
              Equipamentos equipamento = EquipamentoService.getEquipamento(ctm.IDEquipamento);

              CtmOrdemServico ordemServico = CTMOrdemServicoService.getCTMOrdemServicoByCTM(idCTM);
              var dictValue = new Dictionary<string, string>();

              if (ordemServico != null) {
            dictValue.Add("OSNUMERO", ordemServico.IDCTMOrdemServico.ToString());

            dictValue.Add("CLIENTE", cliente.Nome);
            dictValue.Add("ITEM1", "1");
            dictValue.Add("EQUIP1", equipamento.Descricao);
            dictValue.Add("PNMOD1", ctm.PartNumber);
            dictValue.Add("SN1", ctm.SerialNumber);

            dictValue.Add("TM1", returnXOREmpty(ordemServico.Calibracao));
            dictValue.Add("TM2", returnXOREmpty(ordemServico.Teste));
            dictValue.Add("TM3", returnXOREmpty(ordemServico.Conforme));
            dictValue.Add("TM4", returnXOREmpty(ordemServico.Remocao));
            dictValue.Add("TM5", returnXOREmpty(ordemServico.SubstituicaoBateria));
            dictValue.Add("TM6", returnXOREmpty(ordemServico.Inspecao));
            dictValue.Add("TM7", returnXOREmpty(ordemServico.Instalacao));

            dictValue.Add("IP1", returnXOREmpty(ordemServico.Aceitavel));
            dictValue.Add("IP2", returnXOREmpty(ordemServico.Comentarios));

            dictValue.Add("DESCRECEB", ordemServico.DescricaoRecebimento);
            dictValue.Add("SERVEXEC", ordemServico.ServicosExecutados);
            dictValue.Add("DISCREPENCONTRADAS", ordemServico.DiscrepanciasEncontradas);
            dictValue.Add("DESCSERVEXEC", ordemServico.DescricaoServicosExecutados);

            dictValue.Add("DESCMATERIAL1", ordemServico.DescMaterialUtilizado1);
            dictValue.Add("PNMATERIAL1", ordemServico.PnMaterialUtilizado1);
            dictValue.Add("QTDEMATERIAL1", ordemServico.QuantidadeMaterialUtilizado1.ToString());

            dictValue.Add("DESCMATERIAL2", ordemServico.DescMaterialUtilizado2);
            dictValue.Add("PNMATERIAL2", ordemServico.PnMaterialUtilizado2);
            dictValue.Add("QTDEMATERIAL2", ordemServico.QuantidadeMaterialUtilizado2.ToString());

            dictValue.Add("DESCMATERIAL3", ordemServico.DescMaterialUtilizado3);
            dictValue.Add("PNMATERIAL3", ordemServico.PnMaterialUtilizado3);
            dictValue.Add("QTDEMATERIAL3", ordemServico.QuantidadeMaterialUtilizado3.ToString());

            dictValue.Add("APR", returnXOREmpty(ordemServico.Aprovado));
            dictValue.Add("REJ", returnXOREmpty(!ordemServico.Aprovado.GetValueOrDefault()));

            dictValue.Add("INSP", ordemServico.Inspetor);
            dictValue.Add("DATAENC", ordemServico.DataEncerramento.GetValueOrDefault().ToShortDateString());
            dictValue.Add("DATA", DateTime.Now.ToShortDateString());
              }

              var b = new CTMStorageService().GetDocumentoPreenchidoAzure("MUP-012 ORDEM DE SERVIÇO MODELO.docx", dictValue);

              var fileResult = new FileContentResult(b, "application/vnd.openxmlformats-officedocument.wordprocessingml.document");
              fileResult.FileDownloadName = "MUP-012 ORDEM DE SERVIÇO MODELO.docx";
              return fileResult;
        }
        public ActionResult DownloadLaudos(int idCTM)
        {
            CtmLaudo laudo = CTMLaudoService.get(null, idCTM);
              List<String> documentos = new List<String>();
              if (laudo != null) {

            var ctmStorage = new CTMStorageService();
            if (laudo.Anemobarometrico)
              documentos.Add("MUP-043 CERTIFICADO DE INSPEÇÃO E TESTE DE SISTEMA ANEMOBAROMETRICO");
            if (laudo.QuebraLote)
              documentos.Add("MUP-035 QUEBRA DE LOTE");
            if (laudo.SubstituicaoBateria)
              documentos.Add("MUP-042 LAUDO DE INSPEÇÃO E SUBSTITUIÇÃO DE BATERIA DE ELT");
            if (laudo.TesteAltimetro)
              documentos.Add("MUP-036 LAUDO DE INSPEÇÃO E TESTE DE ALTIMETRO");
            if (laudo.TesteEncoder)
              documentos.Add("MUP-037 LAUDO DE INSPEÇÃO E TESTE DE ENCODER");
            if (laudo.TesteMagnetometer)
              documentos.Add("MUP-038 LAUDO DE CALIBRAÇÃO E TESTE DE MAGNETOMETER");
            if (laudo.TesteTransponder)
              documentos.Add("MUP-039 LAUDO DE INSPEÇÃO E TESTE DE TRANSPONDER");
              }

              ViewData["idCTM"] = idCTM;
              return View(documentos);
        }
        public FileResult DownloadLaudo(int idCTM, string nomeLaudo)
        {
            CTM ctm = CTMService.getCTM(idCTM);

              Clientes cliente = ClienteService.getCliente(ctm.IDCliente);
              CtmOrdemServico ordemServico = CTMOrdemServicoService.getCTMOrdemServicoByCTM(idCTM);
              CtmLaudo ctmLaudo = CTMLaudoService.get(null, idCTM);

              var dictValue = new Dictionary<string, string>();

              if (ctmLaudo != null) {
            Contatos contato = cliente.Contatos.FirstOrDefault();
            dictValue.Add("numeroLaudo", ctmLaudo.IDCTMLaudo.ToString());
            dictValue.Add("numeroOS", ordemServico != null ? ordemServico.IDCTMOrdemServico.ToString() : "");
            dictValue.Add("Data", DateTime.Now.ToShortDateString());
            dictValue.Add("Cliente", cliente.Nome);
            dictValue.Add("tel", contato != null ? contato.Telefone : "");
            dictValue.Add("email", contato != null ? contato.Email : "");
            dictValue.Add("matricula", cliente.Matricula);
              }

              nomeLaudo = nomeLaudo + ".docx";

              var b = new CTMStorageService().GetDocumentoPreenchidoAzure(nomeLaudo, dictValue);

              var fileResult = new FileContentResult(b, "application/vnd.openxmlformats-officedocument.wordprocessingml.document");
              fileResult.FileDownloadName = nomeLaudo;
              return fileResult;
        }
        public FileResult DownloadOrder(int id)
        {
            var orcamento = OrcamentoService.getOrcamento(id);
              var cliente = ClienteService.getCliente(orcamento.IDCliente);
              var usuarioResponsavel = UsuarioService.getUsuario(orcamento.IDUsuario);
              var dictValue = new Dictionary<string, string>();
              var dateTimeNow = DateTime.Now;
              dictValue.Add("DataEscrito", String.Format("{0} de {1} de {2}", dateTimeNow.Day, dateTimeNow.ToString("MMM", new CultureInfo("pt-BR")), dateTimeNow.Year));
              dictValue.Add("IDOrcamento", orcamento.IDOrcamento.ToString());
              dictValue.Add("NomeCliente", cliente.Nome);
              dictValue.Add("NomeAeronave", "");
              dictValue.Add("PrefixoAeronave", "");
              dictValue.Add("YYYY", dateTimeNow.Year.ToString());
              dictValue.Add("EmailResponsavel", usuarioResponsavel.Email);
              dictValue.Add("NomeResponsavel", usuarioResponsavel.Nome);

              StringBuilder sbCondicao = new StringBuilder();
              foreach (PagamentosOrcamento pagamento in orcamento.PagamentosOrcamento) {
            sbCondicao.AppendFormat(" R$ {0} em {1}, ", pagamento.Preco.ToString(new CultureInfo("pt-BR")), pagamento.DataPagamento.ToShortDateString());
              }

              if(sbCondicao.Length > 0)
            sbCondicao.Remove(sbCondicao.Length - 2, 2);

              dictValue.Add("CondicaoPagamento", sbCondicao.ToString());

              DataTable dataTable = new DataTable();
              dataTable.Columns.Add("Item");
              dataTable.Columns.Add("Descrição");
              dataTable.Columns.Add("QTDE");
              dataTable.Columns.Add("Valor");
              double precoTotal = 0;
              foreach (ItensOrcamento itemOrcamento in orcamento.ItensOrcamento) {
            string descricaoServico = "Equipamento";
            if (orcamento.Servico) {
              var servico = ServicoService.getServico(itemOrcamento.IDServico.Value);
              descricaoServico = servico.Descricao.ToUpper();
            }
            double precoUnitarioReal = Math.Round(itemOrcamento.PrecoUnitario * orcamento.CotacaoDolar,2,MidpointRounding.ToEven);
            precoTotal += precoUnitarioReal;
            dataTable.Rows.Add(itemOrcamento.Equipamentos.Descricao, descricaoServico, itemOrcamento.Quantidade.ToString(), "R$ " + precoUnitarioReal.ToString(new CultureInfo("pt-BR")));
              }

              dataTable.Rows.Add("", "", "Total", "R$ " + precoTotal.ToString(new CultureInfo("pt-BR")));

              var b = new CTMStorageService().GetOrcamentoPreenchidoAzure("OrcamentoTimbrado.docx", dataTable, dictValue);
              var fileResult = new FileContentResult(b, "application/vnd.openxmlformats-officedocument.wordprocessingml.document");
              fileResult.FileDownloadName = String.Format("Orcamento{0}-{1}.docx", orcamento.IDOrcamento.ToString(), dateTimeNow.Year.ToString());
              return fileResult;
        }
        public FileResult DownloadOrder(int id)
        {
            var orcamento = OrcamentoService.getOrcamento(id);
              var cliente = ClienteService.getCliente(orcamento.IDCliente);
              var usuarioResponsavel = UsuarioService.getUsuario(orcamento.IDUsuario);
              var dictValue = new Dictionary<string, string>();

              double cotacaoDolar = Math.Round(orcamento.CotacaoDolar, 2, MidpointRounding.ToEven);
              Contatos contato = cliente.Contatos.FirstOrDefault();
              dictValue.Add("NumPed", id.ToString());
              dictValue.Add("DataEmissao", DateTime.Now.ToShortDateString());
              dictValue.Add("Dolar", cotacaoDolar.ToString(new CultureInfo("pt-BR")));
              dictValue.Add("NomeEmpresa", cliente.Nome);
              dictValue.Add("Endereco", cliente.Endereco);
              dictValue.Add("Cidade", cliente.Cidade);
              dictValue.Add("UF", cliente.UF);
              dictValue.Add("CEP", cliente.CEP);
              dictValue.Add("Tel", contato != null ? contato.Telefone : "");
              dictValue.Add("Email", contato != null ? contato.Email : "");
              dictValue.Add("CpfCnpj", cliente.CPFCNPJ);
              dictValue.Add("RgIe", cliente.RGIE);
              dictValue.Add("MarcaMatricula", cliente.Matricula);

              DataTable dataTable = new DataTable();
              dataTable.Columns.Add("Quant");
              dataTable.Columns.Add("Descrição");
              dataTable.Columns.Add("NSerie");
              dataTable.Columns.Add("Unitario");
              dataTable.Columns.Add("Total");
              double precoTotal = 0;
              foreach (ItensOrcamento itemOrcamento in orcamento.ItensOrcamento) {
            string descricaoServico = "Equipamento";
            if (orcamento.Servico) {
              var servico = ServicoService.getServico(itemOrcamento.IDServico.Value);
              descricaoServico = servico.Descricao.ToUpper();
            }else{
              var equipamento = EquipamentoService.getEquipamento(itemOrcamento.IDEquipamento);
              descricaoServico = equipamento != null ? equipamento.Descricao : descricaoServico;
            }
            double precoUnitarioReal = Math.Round(itemOrcamento.PrecoUnitario * orcamento.CotacaoDolar, 2, MidpointRounding.ToEven);
            precoTotal += precoUnitarioReal;
            string TotalItem = "R$ " + (itemOrcamento.Quantidade * precoUnitarioReal).ToString(new CultureInfo("pt-BR"));
            dataTable.Rows.Add(itemOrcamento.Quantidade.ToString(), descricaoServico, "" ,"R$ " + precoUnitarioReal.ToString(new CultureInfo("pt-BR")), TotalItem);
              }

              var b = new CTMStorageService().GetPedidoPreenchidoAzure("PedidoMarteUpdates.docx", dataTable, dictValue);
              var fileResult = new FileContentResult(b, "application/vnd.openxmlformats-officedocument.wordprocessingml.document");
              fileResult.FileDownloadName = String.Format("Pedido{0}.docx", orcamento.IDPedido.ToString());
              return fileResult;
        }