예제 #1
0
        public ReturnFilesViewModel(ReturnPackage returnPackage)
        {
            _messageBoxService = new MessageBoxService();
            _returnPackage     = returnPackage;
            _title             = "Please select files for the return package";

            if (returnPackage?.TargetFiles != null && returnPackage.TargetFiles.Count > 0)
            {
                var xliffFiles = returnPackage.TargetFiles.Where(file => file.Name.EndsWith(".sdlxliff")).ToList();
                if (xliffFiles.Count() != 0)
                {
                    foreach (var project in xliffFiles)
                    {
                        var item = new CellViewModel
                        {
                            Id      = project.Id,
                            Name    = project.Name,
                            Checked = false
                        };

                        _listView.Add(item);
                    }
                    ProjectFiles = xliffFiles;
                }
                else
                {
                    ProjectFiles = new List <ProjectFile>();
                }
                Title = _title;
            }
            else
            {
                _messageBoxService.ShowWarningMessage("Please select a StarTransit project!", "Warning");
            }
        }
        /// <summary>
        /// Creates an archive in the Return Package folder and add project files to it
        /// For the moment we add the files without runing any task on them
        /// </summary>
        /// <param name="package"></param>
        private void CreateArchive(ReturnPackage package)
        {
            ChangeMetadataFile(package.PathToPrjFile);

            var prjFileName = Path.GetFileNameWithoutExtension(package.PathToPrjFile);
            var archivePath = Path.Combine(package.FolderLocation, prjFileName + ".tpf");

            foreach (var targetFile in package.TargetFiles)
            {
                var pathToTargetFileFolder = targetFile.LocalFilePath.Substring(0, targetFile.LocalFilePath.LastIndexOf(@"\", StringComparison.Ordinal));

                if (!File.Exists(archivePath))
                {
                    //create the archive, and add files to it
                    using (var archive = ZipFile.Open(archivePath, ZipArchiveMode.Create))
                    {
                        archive.CreateEntryFromFile(package.PathToPrjFile, string.Concat(prjFileName, ".PRJ"), CompressionLevel.Optimal);
                        foreach (var file in package.TargetFiles)
                        {
                            pathToTargetFileFolder = file.LocalFilePath.Substring(0,
                                                                                  file.LocalFilePath.LastIndexOf(@"\", StringComparison.Ordinal));
                            var fileName = Path.GetFileNameWithoutExtension(file.LocalFilePath);

                            archive.CreateEntryFromFile(Path.Combine(pathToTargetFileFolder, fileName), fileName,
                                                        CompressionLevel.Optimal);
                        }
                    }
                }
                else
                {
                    UpdateArchive(archivePath, prjFileName, package, pathToTargetFileFolder);
                }
            }
        }
예제 #3
0
        public ReturnFilesViewModel(ReturnPackage returnPackage, ReturnPackageMainWindow window)
        {
            _returnPackage = returnPackage;
            _window        = window;
            _title         = "Please select files for the return package";

            if (returnPackage != null || returnPackage.TargetFiles.Count > 0)
            {
                var xliffFiles = returnPackage.TargetFiles.Where(file => file.Name.EndsWith(".sdlxliff")).ToList();
                if (xliffFiles.Count() != 0)
                {
                    foreach (var project in xliffFiles)
                    {
                        var item = new CellViewModel
                        {
                            Id      = project.Id,
                            Name    = project.Name,
                            Checked = false
                        };

                        _listView.Add(item);
                    }
                    ProjectFiles = xliffFiles;
                }
                else
                {
                    ProjectFiles = new List <ProjectFile>();
                }
                Title = _title;
            }
            else
            {
                MessageBox.Show("Please select target files!", "Informative message", MessageBoxButton.OK, MessageBoxImage.Warning);
            }
        }
        public ReturnFilesViewModel(ReturnPackage returnPackage, ReturnPackageMainWindow window)
        {
            _returnPackage = returnPackage;
            _window        = window;
            _title         = "Please select files for the return package";

            var xliffFiles = returnPackage.TargetFiles.Where(file => file.Name.EndsWith(".sdlxliff")).ToList();

            if (xliffFiles.Count() != 0)
            {
                foreach (var project in xliffFiles)
                {
                    var item = new CellViewModel
                    {
                        Id      = project.Id,
                        Name    = project.Name,
                        Checked = false
                    };

                    _listView.Add(item);
                }
                ProjectFiles = xliffFiles;
            }
            else
            {
                ProjectFiles = new List <ProjectFile>();
            }

            Title = _title;
        }
예제 #5
0
        public ReturnPackageService()
        {
            _isTransitProject = new List <bool>();
            _returnPackage    = new ReturnPackage();
            var helpers = new Helpers();

            _projectsController = helpers.GetProjectsController();
        }
예제 #6
0
 public ReturnPackageService(IProjectsControllerService projectsControllerService)
 {
     _projectsControllerService = projectsControllerService;
     _returnPackage             = new ReturnPackage
     {
         SelectedTargetFilesForImport = new List <ProjectFile>(),
         ReturnFilesDetails           = new List <ReturnFileDetails>()
     };
 }
예제 #7
0
        public void ExportFiles(ReturnPackage package)
        {
            var taskSequence = package.FileBasedProject.RunAutomaticTasks(package.TargetFiles.GetIds(),
                                                                          new string[] { AutomaticTaskTemplateIds.GenerateTargetTranslations });

            var outputFiles = taskSequence.OutputFiles.ToList();

            CreateArchive(package);
        }
예제 #8
0
        public static bool IsValidOCCRP(ReturnPackage rp)
        {
            var Result = ((rp != null) &&
                          (rp.Data != null) &&
                          (rp.Data.Tables.Count > 0) &&
                          (rp.Data.Tables[0].Rows != null) &&
                          (rp.Data.Tables[0].Rows.Count > 0));

            return(Result);
        }
        private async void CreatePackage()
        {
            try
            {
                _returnPackage = _returnFilesViewModel.GetReturnPackage();
                if (_returnPackage.TargetFiles.Count == 0)
                {
                    var dialog = new MetroDialogSettings
                    {
                        AffirmativeButtonText = "OK"
                    };
                    var result = await _window.ShowMessageAsync("No files selected!", "Please select at least one file.", MessageDialogStyle.Affirmative, dialog);
                }
                else
                {
                    Active = true;
                    string returnPackageFolderPath;

                    if (_returnPackage.FolderLocation == null)
                    {
                        var projectPath = _returnPackage.ProjectLocation.Substring(0,
                                                                                   _returnPackage.ProjectLocation.LastIndexOf(@"\", StringComparison.Ordinal));

                        returnPackageFolderPath = CreateReturnPackageFolder(projectPath);
                    }
                    else
                    {
                        returnPackageFolderPath = CreateReturnPackageFolder(_returnPackage.FolderLocation);
                    }

                    //location of return package folder
                    _returnPackage.FolderLocation = returnPackageFolderPath;

                    await System.Threading.Tasks.Task.Run(() => _returnService.ExportFiles(_returnPackage));

                    Active = false;
                    _cellViewModel.ClearSelectedProjectsList();

                    var dialog = new MetroDialogSettings
                    {
                        AffirmativeButtonText = "OK"
                    };
                    var result = await _window.ShowMessageAsync("Informative message", "The target file(s) was successfully returned", MessageDialogStyle.Affirmative, dialog);

                    if (result == MessageDialogResult.Affirmative)
                    {
                        CloseAction();
                    }
                }
            }
            catch (Exception ex)
            {
                Log.Logger.Error($"CreatePackage method: {ex.Message}\n {ex.StackTrace}");
            }
        }
예제 #10
0
        private void UpdateArchive(string archivePath, string prjFileName, ReturnPackage returnPackagePackage, string pathToTargetFileFolder)
        {
            try
            {
                //open the archive and delete old files
                // archvie in update mode not overrides existing files
                using (var archive = ZipFile.Open(archivePath, ZipArchiveMode.Update))
                {
                    var entriesColection = new ObservableCollection <ZipArchiveEntry>(archive.Entries);
                    foreach (var entry in entriesColection)
                    {
                        if (entry.Name.Equals(string.Concat(prjFileName, ".PRJ")))
                        {
                            entry.Delete();
                        }

                        foreach (var project in returnPackagePackage.TargetFiles)
                        {
                            var projectFromArchiveToBeDeleted =
                                archive.Entries.FirstOrDefault(n => n.Name.Equals(Path.GetFileNameWithoutExtension(project.Name)));
                            if (projectFromArchiveToBeDeleted != null)
                            {
                                projectFromArchiveToBeDeleted.Delete();
                            }
                        }
                    }
                }

                //add files to archive
                using (var archive = ZipFile.Open(archivePath, ZipArchiveMode.Update))
                {
                    archive.CreateEntryFromFile(returnPackagePackage.PathToPrjFile, string.Concat(prjFileName, ".PRJ"), CompressionLevel.Optimal);
                    foreach (var file in returnPackagePackage.TargetFiles)
                    {
                        var fileName = Path.GetFileNameWithoutExtension(file.LocalFilePath);
                        pathToTargetFileFolder = file.LocalFilePath.Substring(0,
                                                                              file.LocalFilePath.LastIndexOf(@"\", StringComparison.Ordinal));
                        archive.CreateEntryFromFile(Path.Combine(pathToTargetFileFolder, fileName), fileName,
                                                    CompressionLevel.Optimal);
                    }
                }
            }
            catch (Exception ex)
            {
                Log.Logger.Error($"UpdateArchive method: {ex.Message}\n {ex.StackTrace}");
            }
        }
예제 #11
0
        public void ExportFiles(ReturnPackage package)
        {
            try
            {
                var taskSequence = package.FileBasedProject.RunAutomaticTasks(package.TargetFiles.GetIds(), new string[]
                {
                    AutomaticTaskTemplateIds.GenerateTargetTranslations
                });

                var outputFiles = taskSequence.OutputFiles.ToList();
                CreateArchive(package);
            }
            catch (Exception ex)
            {
                Log.Logger.Error($"ExportFiles method: {ex.Message}\n {ex.StackTrace}");
            }
        }
예제 #12
0
        /// <summary>
        /// Returns a list of StarTransit return package and  true if the projects selected are a StarTransit projects
        /// </summary>
        /// <returns></returns>
        public Tuple <ReturnPackage, string> GetReturnPackage()
        {
            try
            {
                var projects = Controller.SelectedProjects.ToList();
                var message  = string.Empty;
                if (projects.Count > 1)
                {
                    message = @"Please select only one project.";
                    return(new Tuple <ReturnPackage, string>(null, message));
                }
                var isTransitProject = new List <bool>();
                var returnPackage    = new ReturnPackage();
                foreach (var project in projects)
                {
                    var targetFiles = project.GetTargetLanguageFiles().ToList();
                    var isTransit   = IsTransitProject(targetFiles);

                    if (isTransit)
                    {
                        returnPackage.FileBasedProject = project;
                        returnPackage.ProjectLocation  = project.FilePath;
                        returnPackage.TargetFiles      = targetFiles;
                        //we take only the first file location, because the other files are in the same location
                        returnPackage.LocalFilePath = targetFiles[0].LocalFilePath;
                        isTransitProject.Add(true);
                    }
                    else
                    {
                        isTransitProject.Add(false);
                    }
                }

                if (isTransitProject.Contains(false))
                {
                    message = @"Please select a StarTransit project!";
                    return(new Tuple <ReturnPackage, string>(returnPackage, message));
                }
                return(new Tuple <ReturnPackage, string>(returnPackage, message));
            }
            catch (Exception ex)
            {
                Log.Logger.Error($"GetReturnPackage method: {ex.Message}\n {ex.StackTrace}");
            }
            return(null);
        }
예제 #13
0
        static bool GetAlias(out ReturnPackage rp)
        {
            bool          result = false;
            ReturnPackage rpTemp = null;

            try
            {
                rpTemp = (Parameters.occ.ExecSP("def.sp_SelAlias"));
                result = true;
            }
            catch (Exception ex)
            {
                result = false;
                log.Error("LogTypes.Error.ToString() : " + ex.ToString());
            }
            rp = rpTemp;
            return(result);
        }
예제 #14
0
        public ReturnPackageMainWindow(ReturnPackage returnPackage)
        {
            InitializeComponent();

            var returnFilesViewModel = new ReturnFilesViewModel(returnPackage, this);

            _returnPackageFiles = new ReturnFiles(returnFilesViewModel);

            _cellViewModel = new CellViewModel();

            var returnPackageMainWindowViewModel = new ReturnPackageMainWindowViewModel(returnFilesViewModel, _cellViewModel, this);

            DataContext = returnPackageMainWindowViewModel;
            if (returnPackageMainWindowViewModel.CloseAction == null)
            {
                returnPackageMainWindowViewModel.CloseAction = Close;
            }
        }
예제 #15
0
        private static bool InsQRCodeTicketOcc(out ReturnPackage rp, DataTable dt, long transactionId)
        {
            bool          result = false;
            ReturnPackage rpTemp = null;

            try
            {
                log.Debug("unitID =" + Parameters.TVMDynamic.GetParameter("unitId") + "InsTicketTransactionOcc 46.");
                rpTemp = Parameters.occ.InsQRCodeTicket(dt, "0", Convert.ToInt32(Parameters.TVMDynamic.GetParameter("stationId")), Convert.ToInt32(Parameters.TVMDynamic.GetParameter("unitId").ToString()), (int)transactionId, 0, 0);
                result = true;
            }
            catch (Exception ex)
            {
                result = false;
                log.Error("LogTypes.Error.ToString() " + ex.ToString());
            }
            rp = rpTemp;
            return(result);
        }
예제 #16
0
        private async void CreatePackage()
        {
            _returnPackage = _returnFilesViewModel.GetReturnPackage();
            if (_returnPackage.TargetFiles.Count == 0)
            {
                var dialog = new MetroDialogSettings
                {
                    AffirmativeButtonText = "OK"
                };
                MessageDialogResult result =
                    await _window.ShowMessageAsync("No files selected!", "Please select at least one file.",
                                                   MessageDialogStyle.Affirmative, dialog);
            }
            else
            {
                Active = true;
                string returnPackageFolderPath;

                if (_returnPackage.FolderLocation == null)
                {
                    var projectPath = _returnPackage.ProjectLocation.Substring(0,
                                                                               _returnPackage.ProjectLocation.LastIndexOf(@"\", StringComparison.Ordinal));

                    returnPackageFolderPath = CreateReturnPackageFolder(projectPath);
                }
                else
                {
                    returnPackageFolderPath = CreateReturnPackageFolder(_returnPackage.FolderLocation);
                }



                //location of return package folder
                _returnPackage.FolderLocation = returnPackageFolderPath;

                await System.Threading.Tasks.Task.Run(() => _returnService.ExportFiles(_returnPackage));

                Active = false;
                _cellViewModel.ClearSelectedProjectsList();
                CloseAction();
            }
        }
예제 #17
0
        public ReturnPackageMainWindow(ReturnPackage returnPackage)
        {
            InitializeComponent();

            IMessageBoxService messageBoxService = new MessageBoxService();
            var returnFilesViewModel             = new ReturnFilesViewModel(returnPackage, messageBoxService);

            if (returnFilesViewModel?.ProjectFiles == null)
            {
                Close();
                return;
            }

            _returnPackageFiles = new ReturnFiles(returnFilesViewModel);
            _cellViewModel      = new CellViewModel();

            var returnPackageMainWindowViewModel = new ReturnPackageMainWindowViewModel(returnFilesViewModel, _cellViewModel, messageBoxService);

            DataContext = returnPackageMainWindowViewModel;
            if (returnPackageMainWindowViewModel.CloseAction == null)
            {
                returnPackageMainWindowViewModel.CloseAction = Close;
            }
        }
예제 #18
0
        private static bool InsTicketTransactionOcc(out ReturnPackage rpSub)
        {
            bool          result = false;
            ReturnPackage rpTemp = null;

            try
            {
                log.Debug("unitID =" + Parameters.TVMDynamic.GetParameter("unitId") + "InsTicketTransactionOcc 22.");
                int stationId = Convert.ToInt32(Parameters.TVMDynamic.GetParameter("stationId"));
                int unitId    = Convert.ToInt32(Parameters.TVMDynamic.GetParameter("unitId").ToString());
                rpTemp = Parameters.occ.InsTicketTransaction(0, 0, Ticket.totalPrice, Convert.ToInt16(TransactionType.TT_QR),
                                                             (short)PaymentType.cash, Ticket.totalPrice, 0, Ticket.totalPrice, 0, Constants.Change,
                                                             0, unitId, stationId);

                result = true;
            }
            catch (Exception ex)
            {
                result = false;
                log.Error("LogTypes.Error.ToString() " + ex.ToString());
            }
            rpSub = rpTemp;
            return(result);
        }
예제 #19
0
        private static bool InsOcc(out long transactionId, out DataTable dt)
        {
            bool      result            = false;
            long      transactionIdTemp = 0;
            DataTable dtTemp            = null;

            log.Debug("LogTypes.Info.ToString() Start InsOcc");
            try
            {
                result = InsTicketTransactionOcc(out ReturnPackage rpSub);
                if (result)
                {
                    log.Debug("LogTypes.Info.ToString()  InsTicketTransactionOcc return true ");
                    result = Validation.IsValidOCCRP(rpSub) && (rpSub.Result == 0);
                    if (result)
                    {
                        log.Debug("LogTypes.Info.ToString() InsTicketTransactionOcc return valid data");
                        transactionIdTemp = Convert.ToInt64(rpSub.Data.Tables[0].Rows[0]["recId"]);
                        if (transactionIdTemp > 0)
                        {
                            log.Debug("LogTypes.Info.ToString() InsTicketTransactionOcc return transactionId >0 ");
                            result = GetTicketTable(out dtTemp);
                            if (result)
                            {
                                log.Debug("LogTypes.Info.ToString() GetTicketTable return true");
                                ReturnPackage rp = null;
                                result = InsQRCodeTicketOcc(out rp, dtTemp, transactionIdTemp);
                                if (result)
                                {
                                    log.Debug("LogTypes.Info.ToString() InsQRCodeTicketOcc return true ");
                                    result = (Validation.IsValidOCCRP(rp) && (rp.Result == 0));
                                    if (result)
                                    {
                                        log.Debug("LogTypes.Info.ToString() InsQRCodeTicketOcc return valid data");
                                        Ticket.ticketActivateDts = Convert.ToDateTime(rp.Data.Tables[0].Rows[0]["qrCreateDate"]);
                                        Ticket.dayCount          = Convert.ToInt32(rp.Data.Tables[0].Rows[0]["dayCount"]);
                                    }
                                    else
                                    {
                                        result = false;
                                        log.Debug("LogTypes.Warning.ToString() InsQRCodeTicketOcc return invalid data");
                                    }
                                }
                                else
                                {
                                    result = false;
                                    log.Debug("LogTypes.Warning.ToString() InsQRCodeTicketOcc return false");
                                }
                            }
                            else
                            {
                                result = false;
                                log.Debug("LogTypes.Warning.ToString() GetTicketTable return false");
                            }
                        }
                        else
                        {
                            result = false;
                            log.Debug("LogTypes.Warning.ToString() InsTicketTransactionOcc return transactionId=0");
                        }
                    }
                    else
                    {
                        result = false;
                        log.Debug("LogTypes.Warning.ToString() InsTicketTransactionOcc return invalid data");
                    }
                }
                else
                {
                    result = false;
                    log.Debug("LogTypes.Warning.ToString() InsTicketTransactionOcc return false");
                }
            }
            catch (Exception ex)
            {
                result = false;
                log.Error("LogTypes.Error.ToString() " + ex.ToString());
                log.Error("Error:: row position....");
            }
            transactionId = transactionIdTemp;
            dt            = dtTemp;
            return(result);
        }