Exemplo n.º 1
0
        public IActionResult CreateCabContabilidadeJson(string nomeEmpresa, string nifEmpresa, string licencaEmp, string nrPostLicEmp, string nrEmpresasEmp, string dtExpLicEmp)
        {
            EmpresasViewModel model = new EmpresasViewModel
            {
                Nome    = nomeEmpresa,
                NIF     = nifEmpresa,
                Licenca = licencaEmp
            };

            if (nrPostLicEmp != null)
            {
                model.NrPostos = Int32.Parse(nrPostLicEmp);
            }
            ;
            if (nrEmpresasEmp != null)
            {
                model.NrEmpresas = Int32.Parse(nrEmpresasEmp);
            }
            ;
            if (dtExpLicEmp != null)
            {
                model.DataExpiracao = DateTime.Parse(dtExpLicEmp);
            }
            ;
            model.Ativo              = true;
            model.DataCriacao        = DateTime.Now;
            model.isCabContabilidade = true;
            string        bResult = context.InsertEmpresaJson(model);
            List <string> d       = bResult.Split("|").ToList();
            List <string> v       = d[0].ToString().Split(":").ToList();
            var           s       = Json(new { success = bool.Parse(v[1].ToString()), msg = d[1].ToString().Replace("'", ""), field = d[2].ToString() });

            return(s);
        }
Exemplo n.º 2
0
        public ActionResult Edit(int id, IFormCollection collection)
        {
            try
            {
                EmpresasViewModel tmp = new EmpresasViewModel
                {
                    EmpresaID     = Int32.Parse(collection["EmpresaID"][0].ToString()),
                    NIF           = collection["NIF"][0].ToString(),
                    Nome          = collection["Nome"][0].ToString(),
                    Licenca       = collection["Licenca"][0].ToString(),
                    NrEmpresas    = Int32.Parse(collection["NrEmpresas"][0].ToString()),
                    NrPostos      = Int32.Parse(collection["NrPostos"][0].ToString()),
                    DataCriacao   = DateTime.Parse(collection["DataCriacao"][0]),
                    DataExpiracao = DateTime.Parse(collection["DataExpiracao"][0]),
                    Ativo         = bool.Parse(collection["Ativo"][0].ToString())
                };

                bool bResult = context.UpdateEmpresa(tmp);
                if (bResult)
                {
                    return(this.PartialView(nameof(Index)));
                    // return RedirectToAction(nameof(Index));
                }

                ViewBag.Signal       = "notok";
                ViewBag.ErrorTitle   = "Erro de atualização!";
                ViewBag.ErrorMessage = "Não foi possível atualizar os dados Empresa, " +
                                       " se o erro persistir, entre em contato com o suporte!";
                return(this.PartialView("~/Views/Error/GeneralError.cshtml"));
            }
            catch
            {
                return(View());
            }
        }
Exemplo n.º 3
0
        // GET: EmpresaController/Edit/5

        public ActionResult Edit(int id)
        {
            EmpresasViewModel _tmpModel = context.GetModelByID(id).ToList()[0];

            if (_tmpModel == null)
            {
                ViewBag.ErrorMessage = $"A empresa com ID = {_tmpModel.Nome} não foi possível de encontrar .";
                return(View("NotFound"));
            }
            var model = new EmpresasViewModel
            {
                EmpresaID     = _tmpModel.EmpresaID,
                Nome          = _tmpModel.Nome,
                NIF           = _tmpModel.NIF,
                Licenca       = _tmpModel.Licenca,
                DataCriacao   = _tmpModel.DataCriacao,
                DataExpiracao = _tmpModel.DataExpiracao,
                NrEmpresas    = _tmpModel.NrEmpresas,
                NrPostos      = _tmpModel.NrPostos,
                Ativo         = _tmpModel.Ativo
            };

            ViewBag.NomeEmpresa = model.Nome;
            return(this.PartialView("~/Views/Empresa/Edit.cshtml", model));
        }
Exemplo n.º 4
0
        // GET: EmpresaController/Details/5
        public ActionResult Details(int id)
        {
            EmpresasViewModel tmp = context.GetModelByID(id).ToList()[0];

            ViewBag.NomeEmpresa = tmp.Nome;
            return(this.PartialView(tmp));
        }
Exemplo n.º 5
0
        public bool UpdateEmpresa(EmpresasViewModel _model)
        {
            var _tmp = context.EmpresasViewModel.Attach(_model);

            _tmp.State = Microsoft.EntityFrameworkCore.EntityState.Modified;
            context.SaveChanges();
            bool bResult = true;

            return(bResult);
        }
Exemplo n.º 6
0
        // GET: Empresas
        public async Task <ActionResult> Index(EmpresasViewModel viewModel)
        {
            var query = db.Empresas.AsQueryable();

            if (!String.IsNullOrWhiteSpace(viewModel.RazaoSocial))
            {
                query = query.Where(a => a.RazaoSocial.Contains(viewModel.RazaoSocial));
            }

            viewModel.Resultados = await query.OrderBy(a => a.RazaoSocial).ToPagedListAsync(viewModel.Pagina, viewModel.TamanhoPagina);

            return(View(viewModel));
        }
Exemplo n.º 7
0
        public bool DeleteEmpresa(EmpresasViewModel _model)
        {
            var bResult = false;
            EmpresasViewModel _tmpModel = context.EmpresasViewModel.Where(x => x.EmpresaID == _model.EmpresaID).ToList()[0];

            if (_tmpModel != null)
            {
                context.EmpresasViewModel.Remove(_tmpModel);
                context.SaveChanges();
            }
            bResult = true;
            return(bResult);
        }
Exemplo n.º 8
0
        public IActionResult Index(int EmpresaId)
        {
            IEnumerable <EmpresasViewModel>  modelEmpresa        = empresa.GetModelByID(EmpresaId);
            IEnumerable <ConConfigViewModel> conConfigViewModels = conConfig.GetExistingRegistries(EmpresaId);

            EmpresasViewModel _model = modelEmpresa.ToList()[0];

            ViewBag.NomeEmpresa = _model.Nome;
            ViewBag.EmpresaID   = _model.EmpresaID;
            return(this.PartialView("~/Views/ConConfig/Index.cshtml", conConfigViewModels));

            //IEnumerable<ConConfigViewModel> model =(IEnumerable<ConConfigViewModel>)conConfig.GetExistingRegistries(EmpresaID);
            //return RedirectToAction("CreateConConfig", "ConConfig");
        }
Exemplo n.º 9
0
        public async Task <bool> InsertEmpresa(EmpresasViewModel _model)
        {
            var bResult = false;

            try
            {
                context.EmpresasViewModel.Add(_model);
                int i = context.SaveChanges();
                bResult = true;
                if (bResult)
                {//insert dados da empresa auxiliares.
                    IEnumerable <AGesEmpresasUtilizadores> tmpAGes = aGesContext.AGesEmpresasUtilizadores.Where(x => x.NIF == _model.NIF);

                    var tt = tmpAGes
                             .Select(x => new { x.AnoFi, x.AnoIn, x.CodeApplicacao, x.CodeEmpresa })
                             .Distinct().ToList();

                    foreach (var item in tt)
                    {
                        DadosEmpresaImportada tmp = new DadosEmpresaImportada()
                        {
                            EmpresaID     = _model.EmpresaID,
                            AnoFi         = item.AnoFi,
                            AnoIn         = item.AnoIn,
                            CodeAplicacao = item.CodeApplicacao,
                            CodeEmpresa   = item.CodeEmpresa
                        };
                        bool dadosExist = dadosEmpresaView.ModelExist(tmp);
                        if (dadosExist != true)
                        {
                            var result = await dadosEmpresaView.Insert(tmp);// .DadosEmpresaImportada.Where(x => x.== _model.NIF);

                            if (result)
                            {
                                logger.Log(LogLevel.Information, "Dados Empresa inseridos com successo " + tmp.CodeEmpresa);
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                logger.Log(LogLevel.Warning, "Method: Insert Impresa| Class: SQL_IEmpresa | Erro: " + ex.Message);
            }
            return(bResult);
        }
Exemplo n.º 10
0
 public string UpdateEmpresaJson(EmpresasViewModel _model)
 {
     if (_model.Nome == null)
     {
         return("success:false|'Nome da empresa é um campo obrigatório, não pode ser nulo'|NomeEmpresa");
     }
     ;
     if (_model.NIF == null)
     {
         return("success:false|'NIF da empresa é um campo obrigatório, não pode ser nulo'|NifEmpresa");
     }
     ;
     if (_model.Licenca == null)
     {
         return("success:false|'Licença software é um campo obrigatório, não pode ser nulo'|Licenca");
     }
     ;
     if (_model.NrPostos == 0)
     {
         return("success:false|'Insira numero de licenças para empresa é um campo obrigatório, não pode ser nulo'|NrPostos");
     }
     ;
     if (_model.NrEmpresas == 0)
     {
         return("success:false|'Numero de empresas é um campo obrigatório, não pode ser nulo'|NrEmpresas");
     }
     ;
     if (_model.DataExpiracao == DateTime.Parse("01/01/0001 00:00:00"))
     {
         return("success:false|'A data da expiracao da licença é um campo obrigatório, não pode ser nulo'|DataExpiracao");
     }
     ;
     try
     {
         var _tmp = context.EmpresasViewModel.Attach(_model);
         _tmp.State = Microsoft.EntityFrameworkCore.EntityState.Modified;
         int i = context.SaveChanges();
         return("success:true|error:'Registro actualizado com sucesso'|" + _model.EmpresaID + " ");
     }
     catch (Exception ex)
     {
         logger.Log(LogLevel.Warning, "Method: Insert Impresa| Class: SQL_IEmpresa | Erro: " + ex.Message);
     }
     return("success:false|error:'O registro nao foi actualizado!'|" + _model.EmpresaID + " ");
 }
Exemplo n.º 11
0
        public async Task <ActionResult> Create(EmpresasViewModel _model)
        {
            if (ModelState.IsValid)
            {
                var bResult = await context.InsertEmpresa(_model);

                if (bResult)
                {
                    return(RedirectToAction("Index", "Empresa"));
                }
                else
                {
                    ViewBag.Signal       = "notok";
                    ViewBag.ErrorTitle   = "Erro de inserção";
                    ViewBag.ErrorMessage = "Não foi possível inserir os dados da Empresa, " +
                                           "se o erro persistir entre em contato com o suporte!";
                    return(View("~/Views/Error/GeneralError.cshtml"));
                }
            }
            return(this.PartialView(_model));
        }
Exemplo n.º 12
0
        public IActionResult CreateConConfig(int id)
        {
            EmpresasViewModel modelEmpresa = empresa.GetModelByID(id).ToList()[0];

            if (id > 0)
            {
                IEnumerable <ConConfigViewModel> conConfigs = conConfig.GetExistingRegistries(id);
                if (conConfigs.ToList().Count != 0)
                {
                    ViewBag.EmpresaID   = id;
                    ViewBag.NomeEmpresa = modelEmpresa.Nome;
                    return(this.PartialView("~/Views/ConConfig/index.cshtml", conConfigs));
                }
            }

            //GetExistingRegistries
            //nao esta correcto se ja existir uma conexao, entao caregar


            ViewBag.NomeEmpresa = modelEmpresa.Nome;
            ViewBag.HostName    = ReturnHostName();
            ViewBag.EmpresaId   = id;
            return(this.PartialView());
        }
Exemplo n.º 13
0
        public async Task <IActionResult> CreateCabContabilidade(EmpresasViewModel model)
        {
            if (ModelState.IsValid)
            {
                model.Ativo              = true;
                model.DataCriacao        = DateTime.Now;
                model.isCabContabilidade = true;
                bool bResult = await context.InsertEmpresa(model);

                if (bResult)
                {
                    return(RedirectToAction("Index", "Empresa"));
                }
                else
                {
                    ViewBag.Signal       = "notok";
                    ViewBag.ErrorTitle   = "Erro de inserção";
                    ViewBag.ErrorMessage = "Não foi possível criar o cabinete de contabilidade " +
                                           "se o erro persistir entre em contato com o suporte!";
                    return(View("~/Views/Error/GeneralError.cshtml"));
                }
            }
            return(View(model));
        }
Exemplo n.º 14
0
        public async Task <ActionResult> ImportAsync(List <EmprViewModel> model)
        {
            bool bResult = false;

            try
            {
                List <EmpresasViewModel> cabContab = empContext.GetActiveCabContabilidade().ToList();
                if (cabContab.Count() == 0)
                {
                    return(RedirectToAction("CreateCabContabilidade"));
                }
                List <EmpresasViewModel> lstTmp = new List <EmpresasViewModel>();
                foreach (EmprViewModel itm in model)
                {
                    if (itm.Ncontrib != null && itm.Ncontrib != "")
                    {
                        EmpresasViewModel tmp = new EmpresasViewModel
                        {
                            isCabContabilidade = false,
                            IdCabContabilidade = cabContab[0].EmpresaID,
                            Ativo         = true,
                            NIF           = itm.Ncontrib,
                            Nome          = itm.Nome,
                            Licenca       = "",
                            DataCriacao   = DateTime.Now,
                            DataExpiracao = DateTime.Now.AddYears(1),
                            NrEmpresas    = 0,
                            NrPostos      = 0
                        };
                        bResult = await empContext.InsertEmpresa(tmp);

                        if (bResult == true)
                        {// add users
                            int tmpEmpresaID = empContext.ReturnCompanyID(tmp.Nome, tmp.NIF);
                            try
                            {
                                IEnumerable <AGesEmpresasUtilizadores> _emprUtil = empresaAGes.GetUtilizadores(tmp.NIF, tmp.Nome);
                                List <string> _utls = (from s in _emprUtil
                                                       select s.Utilizador)
                                                      .Distinct().ToList();
                                foreach (string s in _utls)
                                {
                                    //Se o utilizador nao existir na base de dados cadastrar se existir so aditionar a empresa em causa.
                                    ApplicationUser usrApp = await userManager.FindByNameAsync(s + "@gestecnica.com");

                                    if (usrApp == null)
                                    { //insert new user
                                        ApplicationUser user = new ApplicationUser
                                        {
                                            UserName = s + "@gestecnica.com",
                                            Email    = s + "@gestecnica.com"
                                        };
                                        var result = await userManager.CreateAsync(user, "@Gestecnica_com!2020");

                                        logger.Log(LogLevel.Warning, DateTime.Now.ToString() + $": New user '{user.UserName}' successfully added automatically ");
                                        usrApp = await userManager.FindByNameAsync(s + "@gestecnica.com");
                                    }
                                    else
                                    {
                                        logger.Log(LogLevel.Warning, DateTime.Now.ToString() + $": User '{usrApp.UserName}' already exist");
                                    }
                                    /* adding user as specific user to specific company*/
                                    bool sRlt1 = await AddUserToSpecificCompanyAsync(usrApp, tmpEmpresaID);
                                }
                            }
                            catch (Exception ex)
                            {
                                logger.Log(LogLevel.Warning, ex.Message);
                                Console.Write(ex.Message);
                            }
                        }
                        else
                        {
                            @ViewBag.Signal       = "notok";
                            @ViewBag.ErrorTitle   = "Erro de insercao na DB!";
                            @ViewBag.ErrorMessage = $"Não foi possível inserir a empresa com o numero de contribuinte {tmp.NIF}, nome = {tmp.Nome}";
                            return(View("~/Views/Error/GeneralError.cshtml"));
                        }
                    }
                }

                return(RedirectToAction("Index", "Empresa"));
            }
            catch
            {
                return(RedirectToAction("Index", "AGes"));
                // return View();
            }
        }
Exemplo n.º 15
0
        public ActionResult Export()
        {
            int    EmpresaID;
            int    idGabContab      = SessionHelper.GetObjectFromJson <int>(HttpContext.Session, "sessionIDGabContab");
            int    idEmpresaContab  = SessionHelper.GetObjectFromJson <int>(HttpContext.Session, "sessionIDEmpresaContab");
            string AnoEmpresaContab = SessionHelper.GetObjectFromJson <string>(HttpContext.Session, "sessionIDAnoEmpresaContab");

            if (idGabContab == 0)
            {
                logger.LogError($"Gabinete de contabilidade não foi selecionado!");
                ViewBag.Signal       = "notok";
                ViewBag.ErrorTitle   = "Gabinete de Contabilidade !";
                ViewBag.ErrorMessage = "Um gabinete de contabilidade não foi selecionado!" +
                                       " Selecione uma empresa de contabilidade para prosseguir com a operação!";
                return(this.PartialView("~/Views/Error/GeneralError.cshtml"));
            }

            if (idEmpresaContab == 0)
            {
                logger.LogError($"Empresa não foi selecionada!");
                ViewBag.Signal       = "notok";
                ViewBag.ErrorTitle   = "Empresa não foi selecionada !";
                ViewBag.ErrorMessage = "A Empresa não foi selecionada!" +
                                       " Selecione uma empresa para prosseguir com a operação!";
                return(this.PartialView("~/Views/Error/GeneralError.cshtml"));
            }
            EmpresaID = idEmpresaContab;

            if (AnoEmpresaContab == "" || AnoEmpresaContab == null)
            {
                logger.LogError($"Ano fiscal não foi selecionado!");
                ViewBag.Signal       = "notok";
                ViewBag.ErrorTitle   = "Ano fiscal não foi selecionado!";
                ViewBag.ErrorMessage = "Ano fiscal não foi selecionado!" +
                                       " Selecione ano fiscal da empresa para prosseguir com a operação!";
                return(this.PartialView("~/Views/Error/GeneralError.cshtml"));
            }
            string _path = "";

            IEnumerable <EmpresasViewModel> tmp_empVmodel = empresaContext.GetModelByID(EmpresaID);

            GabContabilidadeRepository gabContabilidade      = new GabContabilidadeRepository(appDbContext);
            DadosEmpresaImportada      dadosEmpresaImportada = gabContabilidade.GetEmpresaModel(idEmpresaContab, Int16.Parse(AnoEmpresaContab));

            if (tmp_empVmodel.ToList().Count == 1)
            {
                if (_path == "" || _path == null)
                {
                    _path = "C:\\Sage Data\\Sage Accountants\\";
                }

                EmpresasViewModel empresaViewModels = tmp_empVmodel.ToList()[0];

                _path += (_path.EndsWith("\\") ? "" : "\\") + dadosEmpresaImportada.CodeEmpresa + AnoEmpresaContab + dadosEmpresaImportada.CodeAplicacao + "\\Sync\\toCLAB";

                if (!Directory.Exists(_path))
                {
                    Directory.CreateDirectory(_path);
                }

                var claimsIdentity = (ClaimsIdentity)this.User.Identity;
                var claim          = claimsIdentity.FindFirst(System.Security.Claims.ClaimTypes.NameIdentifier);
                var userId         = claim.Value;

                string nomeEmpresa = empresaViewModels.Nome;
                ViewBag.NomeEmpresa = nomeEmpresa;
                CLabViewModel tmp = new CLabViewModel
                {
                    Ano            = Int16.Parse(AnoEmpresaContab),
                    EmpresaSageId  = EmpresaID,
                    DataLancamento = DateTime.Now,
                    UserID         = userId,
                    OutputFilePAth = _path //"C:\\Sage Data\\Sage Accountants\\" + ACtb + 2020 + ACtb + "\\Sync\\toCLAB\\OutputSageFile\\";
                };
                //tmp.OutputFilePAth = "C:\\Sage Data\\Sage Accountants\\" + ACtb + 2020 + ACtb + "\\Sync\\toCLAB\\OutputSageFile\\"  ;
                //C:\Sage Data\Sage Accountants\ACtb2020ACtb\Sync\toCLAB

                return(PartialView("~/Views/CLab/Export.cshtml", tmp));
            }
            return(View());
        }
Exemplo n.º 16
0
        public IActionResult Export(CLabViewModel model)
        {
            if (model.InputFilePathStr == null)
            {
                return(Json(new  { success = false, message = "Ficheiro .asc nao foi carregado ainda!" }));
            }

            EncryptionHelper encryptionHelper = new EncryptionHelper();
            string           ASCFilePath      = encryptionHelper.Decrypt(model.InputFilePathStr);

            int    idGabContab      = SessionHelper.GetObjectFromJson <int>(HttpContext.Session, "sessionIDGabContab");
            int    idEmpresaContab  = SessionHelper.GetObjectFromJson <int>(HttpContext.Session, "sessionIDEmpresaContab");
            string AnoEmpresaContab = SessionHelper.GetObjectFromJson <string>(HttpContext.Session, "sessionIDAnoEmpresaContab");

            //string ASCFilePath = $"{env.WebRootPath}/SageData/InputSageFiles/{model.InputFilePath.FileName}".Replace("/", "\\");

            ASCFilePath = ASCFilePath.Replace("/", "\\");

            if (!System.IO.File.Exists(ASCFilePath))
            {
                return(Json(new { success = false, message = "Ficheiro .asc nao foi encontrado!" }));
            }

            StreamReader streamReader = new StreamReader(ASCFilePath, Encoding.GetEncoding("iso-8859-1"));

            streamReader.DiscardBufferedData();
            streamReader.BaseStream.Seek(0, System.IO.SeekOrigin.Begin);

            string[] ASCpathArray = ASCFilePath.Split('\\');
            string   fileName     = ASCpathArray[ASCpathArray.Length - 1];

            string[] fileNameArray    = fileName.Split('.');
            string   fileNameNoExt    = fileNameArray[0];
            int      index            = fileNameNoExt.IndexOf(" (");
            string   fileNameNoExtRep = index >= 0 ? fileNameNoExt.Remove(index) : fileNameNoExt;

            string[] fileNameNoExtArray = fileNameNoExtRep.Split('_');
            string   NIF   = fileNameNoExtArray[0];
            string   Year  = fileNameNoExtArray[fileNameNoExtArray.Length - 2];
            string   Month = fileNameNoExtArray[fileNameNoExtArray.Length - 1];

            EmpresasViewModel     empresaViewModel      = appDbContext.EmpresasViewModel.FirstOrDefault(x => x.EmpresaID == model.EmpresaSageId);
            DadosEmpresaImportada dadosEmpresaImportada = appDbContext.DadosEmpresaImportada.FirstOrDefault(x => x.EmpresaID == model.EmpresaSageId);

            if (empresaViewModel.NIF != NIF)
            {
                return(Json(new { success = false, message = "Você está tentando importar um arquivo .asc que pertence a outra empresa, verifique o NIF!" }));
            }

            if (AnoEmpresaContab != Year)
            {
                return(Json(new { success = false, message = "Ano fiscal do arquivo .asc e diferente do selecionado. Verifique o ano selecionado!" }));
            }

            Empr empr = aGesContext.Emprs.FirstOrDefault(x => x.Ncontrib == NIF && x.Cemp == dadosEmpresaImportada.CodeEmpresa);

            DadosEmpresaImportada dadosEmpresaView = dadosEmpresaViewModel.ReturnModelByEmpresaAno(model.EmpresaSageId, Int16.Parse(Year));
            string db = dadosEmpresaView.CodeEmpresa.ToString() + Year.ToString() + dadosEmpresaView.CodeAplicacao.ToString();

            ConConfigViewModel conConfigViewModel = conConfig.FindByEmpresaId(model.EmpresaSageId).ToList()[0];

            model.strInputFilePath = ASCFilePath;
            ConverterASCtoXML conv =
                new ConverterASCtoXML(streamReader, model, Month, db, dadosEmpresaView, conConfigViewModel, empresaViewModel, empr);


            List <ErrorLine> Errors = new List <ErrorLine>();

            conv.ConvertFile(model.OutputFilePAth);

            Errors = conv.Errors;

            if (Errors.Count > 0)
            {
                return(Json(new { success = true, message = "Arquivo parcialmente exportado com sucesso! Verifique os erros!", errors = JsonSerializer.Serialize(Errors) }));
            }

            return(Json(new { success = true, message = "Ficheiro convertido com sucesso!" }));
        }
Exemplo n.º 17
0
        public JsonResult ConvertFile(ExcelLabViewModel model)
        {
            if (model.DiarioLancamentoInt == "0")
            {
                return(Json(new { success = false, message = "Escolha um diário de lançamento!" }));
            }

            if (model.TipoLancamentoInt == "0")
            {
                return(Json(new { success = false, message = "Escolha o tipo de lançamento!" }));
            }

            if (model.TipoDocumentoInt == "0")
            {
                return(Json(new { success = false, message = "Escolha o tipo de documento!" }));
            }
            if (model.InputFilePath == null)
            {
                return(Json(new { success = false, message = "Escolha um ficheiro *.xlsx para importar" }));
            }

            int    idGabContab      = SessionHelper.GetObjectFromJson <int>(HttpContext.Session, "sessionIDGabContab");
            int    idEmpresaContab  = SessionHelper.GetObjectFromJson <int>(HttpContext.Session, "sessionIDEmpresaContab");
            string AnoEmpresaContab = SessionHelper.GetObjectFromJson <string>(HttpContext.Session, "sessionIDAnoEmpresaContab");

            IEnumerable <EmpresasViewModel> tmp_empVmodel         = empresaContext.GetModelByID(idEmpresaContab);
            GabContabilidadeRepository      gabContabilidade      = new GabContabilidadeRepository(appDbContext);
            DadosEmpresaImportada           dadosEmpresaImportada = gabContabilidade.GetEmpresaModel(idEmpresaContab, Int16.Parse(AnoEmpresaContab));

            string baseDados = dadosEmpresaImportada.CodeEmpresa + AnoEmpresaContab + dadosEmpresaImportada.CodeAplicacao;

            string connString = "server=.;database=" + baseDados + ";Trusted_Connection=true;MultipleActiveResultSets=true;";

            using var context = new CustomDbContext(connString);

            string importedExcelFilePath = encryptionHelper.Decrypt(model.InputFilePath);

            model.InputFilePath = importedExcelFilePath;

            //FileUpload1.SaveAs(ExcelFilePath);

            string XMLFilePath = model.OutputFilePath;

            //string LocalCon = Session["LocalConnection"].ToString();

            string CodEmpSage = dadosEmpresaImportada.CodeEmpresa;

            //string EmpSageCon = Session["EmpSageConnection"].ToString();

            string CodDiario = model.DiarioLancamentoInt; //this.ddrDiarioLanc.SelectedValue;
            string TipoLanc  = model.TipoLancamentoInt;   //this.ddrTipoLanc.SelectedValue;
            string TipoDoc   = model.TipoDocumentoInt;    //this.ddrTipoDoc.SelectedValue;
            bool   LancUnico = model.LancamentoUnico;

            string[] ExcelPathArray = importedExcelFilePath.Split('\\');
            string   fileName       = ExcelPathArray[ExcelPathArray.Length - 1];

            string[] fileNameArray    = fileName.Split('.');
            string   fileNameNoExt    = fileNameArray[0];
            int      index            = fileNameNoExt.IndexOf(" (");
            string   fileNameNoExtRep = index >= 0 ? fileNameNoExt.Remove(index) : fileNameNoExt;

            string[] fileNameNoExtArray = fileNameNoExtRep.Split('_');
            string   NIF  = fileNameNoExtArray[0];
            string   Year = fileNameNoExtArray[1];

            //using (SqlConnection con = new SqlConnection(Session["LocalConnection"].ToString()))
            //{
            //    con.Open();

            //    string selectEmpresaSage_query = "select NContrib from Emprs where CEmp = '" + Session["EmpSage"].ToString() + "'";
            //    SqlCommand selectEmpresaSage = new SqlCommand(selectEmpresaSage_query, con);
            //    string NifEmpSage = selectEmpresaSage.ExecuteScalar().ToString();

            if (NIF != tmp_empVmodel.ToList()[0].NIF)
            {
                return(Json(new { success = false, message = "Contribuinte nao coincide, verifique o contribuinte a importar!" }));
            }
            if (Year != AnoEmpresaContab)
            {
                return(Json(new { success = false, message = "O Ano seleccionado nao coresponde com o Ano do ficheiro a importar!" }));
            }


            string DataLanc = model.DataLancamento.ToString("yyyy-MM-dd");//Convert.ToDateTime(this.txtDataLanc.Text).ToString("yyyy-MM-dd");

            ConConfigViewModel conConfigViewModel = conConfig.FindByEmpresaId(idEmpresaContab).ToList()[0];
            EmpresasViewModel  empresaViewModel   = appDbContext.EmpresasViewModel.FirstOrDefault(x => x.EmpresaID == idEmpresaContab);
            Empr empr = aGesContext.Emprs.FirstOrDefault(x => x.Ncontrib == NIF && x.Cemp == dadosEmpresaImportada.CodeEmpresa);

            var conv = new ConvertExcelToXML(model, baseDados, dadosEmpresaImportada, conConfigViewModel, empresaViewModel, empr);

            List <ErrorLine> Errors = new List <ErrorLine>();

            conv.ConvertFile();
            Errors = conv.errors;

            if (Errors.Count > 0)
            {
                return(Json(new { success = true, message = "Arquivo parcialmente exportado com sucesso! Verifique os erros!", errors = JsonSerializer.Serialize(Errors) }));
            }

            return(Json(new { success = true, message = "Ficheiro convertido com sucesso!" }));

            //    var memory = new MemoryStream();
            //using (var stream = new FileStream(importedExcelFilePath, FileMode.Open))
            //{
            //    await stream.CopyToAsync(memory);
            //}
            //memory.Position = 0;
            //var ext = Path.GetExtension(importedExcelFilePath).ToLowerInvariant();
            //var tExt = GetMimeTypes()[ext];
            //int _year = DateTime.Now.Year;
            //int _month = DateTime.Now.Month;
            //string outputFileName = $"{tmp_empVmodel.ToList()[0].NIF}_{dadosEmpresaImportada.CodeEmpresa}{dadosEmpresaImportada.CodeAplicacao}_{_year.ToString()}_{_month.ToString()}.xlsx";
        }