using System.Collections.Generic; using System.Linq; using UAF.Perforce; using UAF.Perforce.Requests; using UAF.WPF.Commands; namespace DataFileAnalyzer.Commands { public class OpenForDeleteCommand : BaseCommand { public override bool CanExecute(object parameter) { DataFileAnalyzerModel model = parameter as DataFileAnalyzerModel; if (model != null) { if (!model.IsPerforceEnabled) return false; if (model.SelectedFile != null) { switch (model.ActiveView) { case DataFileAnalyzerModel.FocusedView.FileView: return true; case DataFileAnalyzerModel.FocusedView.ReferencedByMeView: if (model.SelectedFile.Children.Where(dependency => dependency.IsSelected).Count() > 0) return true; else return false; case DataFileAnalyzerModel.FocusedView.ReferencingMeView: if (model.SelectedFile.Parents.Where(dependency => dependency.IsSelected).Count() > 0) return true; else return false; default: return false; } } } return false; } public override void Execute(object parameter) { DataFileAnalyzerModel model = parameter as DataFileAnalyzerModel; if (model != null && model.SelectedFile != null && model.IsPerforceEnabled) { IEnumerable filesToDelete = null; string dataFolder = UAF.ProjectManager.Instance.CurrentProject.DataPath; if (model.ActiveView == DataFileAnalyzerModel.FocusedView.FileView) { filesToDelete = model.SelectedFiles.Select(file => dataFolder + file.NormalizedPath); } else if (model.ActiveView == DataFileAnalyzerModel.FocusedView.ReferencedByMeView) { filesToDelete = model.SelectedFile.Children.Where(dependency => dependency.IsSelected).Select(dep => dataFolder + dep.Path.Replace('/', '\\')); } else if (model.ActiveView == DataFileAnalyzerModel.FocusedView.ReferencingMeView) { filesToDelete = model.SelectedFile.Parents.Where(dependency => dependency.IsSelected).Select(dep => dataFolder + dep.Path.Replace('/', '\\')); } if (filesToDelete != null) { PerforceDeleteRequest deleteRequest = new PerforceDeleteRequest(); deleteRequest.AddFiles(filesToDelete); PerforceManager.Instance.SendRequest(deleteRequest); } } } } }