Пример #1
0
        public IActionResult Edit(int id)
        {
            ConConfigViewModel _tmpModel = conConfig.GetModelByID(id);
            IEnumerable <EmpresasViewModel> vmEmpresa = empresa.GetModelByID(_tmpModel.EmpresaId);

            if (_tmpModel == null)
            {
                ViewBag.ErrorMessage = $"A conexão com ID = {_tmpModel.NomeServidor} não foi possível de encontrar .";
                return(View("NotFound"));
            }
            var model = new ConConfigViewModel
            {
                ConexaoID        = _tmpModel.ConexaoID,
                EmpresaId        = _tmpModel.EmpresaId,
                InstanciaSQL     = _tmpModel.InstanciaSQL,
                NomeServidor     = _tmpModel.NomeServidor,
                ActiveConnection = _tmpModel.ActiveConnection,
                Password         = _tmpModel.Password,
                Utilizador       = _tmpModel.Utilizador
            };

            //ver se exite a empressa e nome empres tem que se passar aqui
            ViewBag.NomeServidor = model.NomeServidor;
            if (vmEmpresa.ToList().Count > 0)
            {
                ViewBag.NomeEmpresa = vmEmpresa.ToList()[0].Nome;
            }

            return(this.PartialView(model));
        }
Пример #2
0
        public IActionResult Edit([FromBody] ConConfigViewModel _model)
        {
            if (_model == null)
            {
                ViewBag.ErrorMessage = $"Modelo da conexao = {_model.NomeServidor} nao foi possivel de encontrar";
                return(View("NotFound"));
            }
            else
            {
                string bResult = conConfig.UpdateConnection(_model);//
                if (bResult.StartsWith("success:true"))
                {
                    //IEnumerable<ConConfigViewModel> _m = conConfig.GetExistingRegistries(_model.EmpresaId);
                    //return this.PartialView("~/Views/ConConfig/Index.cshtml",_m);
                    return(Json(new { success = true, msg = "Successful operation" }));
                    //return RedirectToAction("Index", new { EmpresaId = _model.EmpresaId});
                }

                if (bResult.StartsWith("success:false"))
                {
                    List <string> d = bResult.Split(",").ToList();

                    return(Json(new { success = false, msg = d[1].ToString() }));
                }
                // ViewBag.Signal = "notok";
                //ViewBag.ErrorTitle = "Erro de atualização!";
                //ViewBag.ErrorMessage = "Não foi possível atualizar os dados de conexão no servidor, " +
                //                       " se o erro persistir, entre em contato com o suporte!";
                //return this.PartialView("~/Views/Error/GeneralError.cshtml");
                return(View());
            }
        }
Пример #3
0
        public async Task <IActionResult> ExportPlContasAsync(string EmpresaID, string Ano, string _path)
        {
            DadosEmpresaImportada dadosEmpresaView = dadosEmpresaViewModel.ReturnModelByEmpresaAno(int.Parse(EmpresaID), Int16.Parse(Ano));
            string db            = dadosEmpresaView.CodeEmpresa.ToString() + Ano.ToString() + dadosEmpresaView.CodeAplicacao.ToString();
            string _nomeFicheiro = DateTime.Now.ToString("yyyyMMdd_hhmmss") + "_" + dadosEmpresaView.CodeAplicacao.ToString() + Ano + "_CLAB_PlanodeContas.xlsx";

            ConConfigViewModel conConfigViewModel = conConfig.FindByEmpresaId(int.Parse(EmpresaID)).ToList()[0];
            clsCheckValidData  checkValidData     = new clsCheckValidData(conConfigViewModel.NomeServidor, conConfigViewModel.Utilizador, conConfigViewModel.Password, db);

            bool validDbAndServer = checkValidData.ValidDbAndServer();

            if (validDbAndServer != true)
            {
                ViewBag.Signal       = "notok";
                ViewBag.ErrorTitle   = "Base de dados ou servidor inexistente!";
                ViewBag.ErrorMessage = $"Por favour verifique a existencia da Base de dados: {dadosEmpresaView.CodeEmpresa + dadosEmpresaView.CodeAplicacao + dadosEmpresaView.AnoFi.ToString()} !";
                return(this.PartialView("~/Views/Error/GeneralError.cshtml"));
            }

            string    strSql = "SELECT CConta as 'Nº da Conta', CASE WHEN CContaMae = '' THEN 'R' WHEN CContaMae != '' AND EdeMov = 0 THEN 'I' WHEN EdeMov = 1 THEN 'L' ELSE '' END as 'Tp.', Descr as 'Nome da conta', CCIva as 'Conta IVA/Ref' FROM Conta ORDER BY CConta";
            DataTable dt     = checkValidData.ReturnDataTable(strSql);

            string _FullPath = _path + "\\" + _nomeFicheiro;

            await SavePlContasAsync(_path, _nomeFicheiro, dt);

            //   bool aa= SavePlContasAsync(_path, _nomeFicheiro, dt); ;
            if (!System.IO.File.Exists(_FullPath))
            {
                return(Json(new { success = false, msg = "O arquivo nao foi exportado com sucesso!" }));
            }
            return(Json(new { success = true, msg = "Arquivo exportado com sucesso!" }));
        }
Пример #4
0
        public async Task <IActionResult> ExportSaveCentroCustoAsyncAsync(string EmpresaID, string Ano, string _path)
        {
            DadosEmpresaImportada dadosEmpresaView = dadosEmpresaViewModel.ReturnModelByEmpresaAno(int.Parse(EmpresaID), Int16.Parse(Ano));
            string db            = dadosEmpresaView.CodeEmpresa.ToString() + Ano.ToString() + dadosEmpresaView.CodeAplicacao.ToString();
            string _nomeFicheiro = DateTime.Now.ToString("yyyyMMdd_hhmmss") + "_" + dadosEmpresaView.CodeAplicacao.ToString() + Ano + "_CLAB_CentrosCusto.xlsx";

            ConConfigViewModel conConfigViewModel = conConfig.FindByEmpresaId(int.Parse(EmpresaID)).ToList()[0];
            clsCheckValidData  checkValidData     = new clsCheckValidData(conConfigViewModel.NomeServidor, conConfigViewModel.Utilizador, conConfigViewModel.Password, db);

            bool validDbAndServer = checkValidData.ValidDbAndServer();

            if (validDbAndServer != true)
            {
                ViewBag.Signal       = "notok";
                ViewBag.ErrorTitle   = "Base de dados ou servidor inexistente!";
                ViewBag.ErrorMessage = $"Por favour verifique a existencia da Base de dados: {dadosEmpresaView.CodeEmpresa + dadosEmpresaView.CodeAplicacao + dadosEmpresaView.AnoFi.ToString()} !";
                return(this.PartialView("~/Views/Error/GeneralError.cshtml"));
            }

            string strSql = "SELECT CCeCu as 'Centro Custo', Descr as 'Descrição' FROM CenCu ORDER BY TCeCu, CCeCu";

            DataTable dt = checkValidData.ReturnDataTable(strSql);

            string _FullPath = _path + "\\" + _nomeFicheiro;

            await SaveCentroCustoAsync(_path, _nomeFicheiro, dt);

            if (!System.IO.File.Exists(_FullPath))
            {
                return(Json(new { success = false, msg = "O arquivo nao foi exportado com sucesso!" }));
            }
            return(Json(new { success = true, msg = "Arquivo exportado com sucesso!" }));
        }
Пример #5
0
        public string InsertConnection(ConConfigViewModel _model)
        {
            if (_model.EmpresaId == 0)
            {
                return("success:false|'Id Empresa é um campo obrigatório, não pode ser nulo'|EmpresaId");
            }
            ;
            if (_model.NomeServidor == null)
            {
                return("success:false|'NomeServidor é um campo obrigatório, não pode ser nulo'|NomeServidor");
            }
            ;
            if (_model.Utilizador == null)
            {
                return("success:false|'Utilizador é um campo obrigatório, não pode ser nulo'|Utilizador");
            }
            ;
            if (_model.Password == null)
            {
                return("success:false|'Palavra Passe é um campo obrigatório, não pode ser nulo'|Password");
            }
            ;

            EncryptionHelper encryptionHelper = new EncryptionHelper();

            _model.Password = encryptionHelper.Encrypt(_model.Password);
            context.ConConfigViewModel.Add(_model);
            context.SaveChanges();
            return("success:true|error:'Registro inserido com sucesso'|0");
        }
Пример #6
0
        public IActionResult Details(int id)
        {
            ConConfigViewModel _tmpModel = conConfig.GetModelByID(id);

            if (_tmpModel == null)
            {
                ViewBag.ErrorMessage = $"A conexão com ID = {_tmpModel.NomeServidor} não foi possível de encontrar .";
                return(View("NotFound"));
            }

            ViewBag.NomeServidor = _tmpModel.NomeServidor;
            return(this.PartialView(_tmpModel));
        }
Пример #7
0
        //private   SqlConnection sqlConnection;
        public clsCheckValidData(ConConfigViewModel _conConfigViewModel, string dataBase)
        {
            string _connectionString = "Data Source=" + _conConfigViewModel.NomeServidor +
                                       ";Initial Catalog=" + dataBase +
                                       ";Persist Security Info=True" +
                                       ";User ID=" + _conConfigViewModel.Utilizador +
                                       ";Password="******";TransparentNetworkIPResolution=False;max pool size=32700";

            this.DataBase           = dataBase;
            this.ConConfigViewModel = _conConfigViewModel;
            this.connectionString   = _connectionString;
        }
Пример #8
0
        //public async Task<ConConfigViewModel> GetModelByID(int id)
        //{
        //    var taskResult = await Task.Run(() =>
        //    {
        //        return context.ConConfigViewModel.Where(x => x.EmpresaID == id);
        //    });
        //    return (ConConfigViewModel)taskResult;
        //}

        public bool DeleteConnection(ConConfigViewModel _model)
        {
            var bResult = false;
            ConConfigViewModel _tmpModel = context.ConConfigViewModel.FirstOrDefault(x => x.ConexaoID == _model.ConexaoID);

            if (_tmpModel != null)
            {
                context.ConConfigViewModel.Remove(_tmpModel);
                context.SaveChanges();
                bResult = true;
            }

            return(bResult);
        }
Пример #9
0
        public IActionResult CreateJson(ConConfigViewModel model)
        {
            int  EmpresaId = model.EmpresaId;
            bool result    = false;

            IEnumerable <ConConfigViewModel> tmp = conConfig.FindByEmpresaId(EmpresaId);

            if (tmp.ToList().Count > 0)
            {
                model.EmpresaId = EmpresaId;
                result          = conConfig.DeleteConnection(model);
            }
            string bResult = conConfig.InsertConnection(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);
        }
Пример #10
0
        public IActionResult Delete(ConConfigViewModel _model)
        {
            ConConfigViewModel _tmpModel = conConfig.GetModelByID(_model.ConexaoID);

            if (_tmpModel == null)
            {
                ViewBag.ErrorMessage = $"A conexão com ID = {_model.NomeServidor} não foi possível de encontrar .";
                return(View("NotFound"));
            }

            bool bResult = conConfig.DeleteConnection(_model);

            if (bResult)
            {
                return(RedirectToAction("Index", new { EmpresaId = _tmpModel.EmpresaId }));
            }
            ViewBag.Signal       = "notok";
            ViewBag.ErrorTitle   = "Erro ao apagar!";
            ViewBag.ErrorMessage = $"Não foi possível apagar a conexao {_model.NomeServidor}, " +
                                   " se o erro persistir, entre em contato com o suporte!";
            return(this.PartialView("~/Views/Error/GeneralError.cshtml"));
        }
Пример #11
0
        public IActionResult CreateConConfig(int EmpresaId, ConConfigViewModel model)
        {
            bool result = false;

            if (ModelState.IsValid)
            {
                IEnumerable <ConConfigViewModel> tmp = conConfig.FindByEmpresaId(EmpresaId);

                if (tmp.ToList().Count > 0)
                {
                    model.EmpresaId = EmpresaId;
                    result          = conConfig.DeleteConnection(model);
                }

                //result = conConfig.InsertConnection(model);
                string bResult = conConfig.InsertConnection(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);
                //if (result)
                //{
                //    IEnumerable<ConConfigViewModel> _mdl = conConfig.GetExistingRegistries(EmpresaId);
                //    return this.PartialView("~/Views/ConConfig/Index.cshtml", _mdl);
                //}
                //else
                //{
                //    ViewBag.Signal = "notok";
                //    ViewBag.ErrorTitle = "Erro de inserção";
                //    ViewBag.ErrorMessage = "Não foi possível inserir os dados de conexão no servidor, " +
                //                           "se o erro persistir entre em contato com o suporte!";
                //    return this.PartialView("~/Views/Error/GeneralError.cshtml");
                //}
            }
            return(this.PartialView(model));
        }
Пример #12
0
        public string UpdateConnection(ConConfigViewModel _model)
        {
            if (_model.ConexaoID == 0)
            {
                return("success:false|'Id Conexao é um campo obrigatório, não pode ser nulo'|ConexaoID");
            }
            ;
            if (_model.EmpresaId == 0)
            {
                return("success:false|'Id Empresa é um campo obrigatório, não pode ser nulo'|EmpresaId");
            }
            ;
            if (_model.NomeServidor == null)
            {
                return("success:false|'NomeServidor é um campo obrigatório, não pode ser nulo'|NomeServidor");
            }
            ;
            if (_model.Utilizador == null)
            {
                return("success:false|'Utilizador é um campo obrigatório, não pode ser nulo'|Utilizador");
            }
            ;
            if (_model.Password == null)
            {
                return("success:false|'Palavra Passe é um campo obrigatório, não pode ser nulo'|Password");
            }
            ;

            EncryptionHelper encryptionHelper = new EncryptionHelper();

            _model.Password = encryptionHelper.Encrypt(_model.Password);

            var _tmp = context.ConConfigViewModel.Attach(_model);

            _tmp.State = Microsoft.EntityFrameworkCore.EntityState.Modified;
            context.SaveChanges();
            return("success:true|error:'Registro atualizado com sucesso'|0");
        }
Пример #13
0
        public IActionResult Delete(int id)
        {
            ConConfigViewModel _conConf = conConfig.GetModelByID(id);

            if (_conConf == null)
            {
                ViewBag.ErrorMessage = $"A conexão com ID = {id} não foi possível de encontrar .";
                return(View("NotFound"));
            }
            var model = new ConConfigViewModel
            {
                EmpresaId        = _conConf.EmpresaId,
                ConexaoID        = _conConf.ConexaoID,
                InstanciaSQL     = _conConf.InstanciaSQL,
                NomeServidor     = _conConf.NomeServidor,
                ActiveConnection = _conConf.ActiveConnection,
                Password         = _conConf.Password,
                Utilizador       = _conConf.Utilizador
            };

            ViewBag.NomeServidor = model.NomeServidor;
            return(this.PartialView(model));
        }
Пример #14
0
        public IActionResult EditJson(int ConexaoID, int EmpresaId, string NomeServidor, string InstanciaSQL, string Utilizador, string Password, bool ActiveConnection)
        {
            //https://stackoverflow.com/questions/40682403/bad-request-for-jquery-ajax-to-post-stringified-json-data-to-mvc-action
            ConConfigViewModel _model = new ConConfigViewModel
            {
                ConexaoID        = ConexaoID,
                EmpresaId        = EmpresaId,
                NomeServidor     = NomeServidor,
                InstanciaSQL     = InstanciaSQL,
                Utilizador       = Utilizador,
                Password         = Password,
                ActiveConnection = ActiveConnection
            };

            string bResult = conConfig.UpdateConnection(_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);
        }
Пример #15
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!" }));
        }
Пример #16
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";
        }