aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels
diff options
context:
space:
mode:
authorRoy Ben-Shabat <Roy@Twine-s.com>2018-04-25 18:30:00 +0300
committerRoy Ben-Shabat <Roy@Twine-s.com>2018-04-25 18:30:00 +0300
commit2c60f9390e0553dd5a608a7e5b30d69d54d4c763 (patch)
treec251afbab85f1276424826e4595319c19241893f /Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels
parenta89077bae848d010ae70da6be572dee3b824a895 (diff)
downloadTango-2c60f9390e0553dd5a608a7e5b30d69d54d4c763.tar.gz
Tango-2c60f9390e0553dd5a608a7e5b30d69d54d4c763.zip
Issue reporting.
Diffstat (limited to 'Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels')
-rw-r--r--Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/MainViewVM.cs68
-rw-r--r--Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/ResolvedIssuesViewVM.cs61
2 files changed, 128 insertions, 1 deletions
diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/MainViewVM.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/MainViewVM.cs
index 0882267e8..4c41c7860 100644
--- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/MainViewVM.cs
+++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/MainViewVM.cs
@@ -148,6 +148,11 @@ namespace Tango.MachineStudio.UI.ViewModels
/// </summary>
public RelayCommand ReportIssueCommand { get; set; }
+ /// <summary>
+ /// Gets or sets the open resolved bugs.
+ /// </summary>
+ public RelayCommand OpenResolvedBugsCommand { get; set; }
+
private IAuthenticationProvider _authenticationProvider;
/// <summary>
/// Gets or sets the authentication provider.
@@ -302,6 +307,7 @@ namespace Tango.MachineStudio.UI.ViewModels
ResolveMachineEventCommand = new RelayCommand<MachinesEvent>(ResolveMachineEvent);
ReportIssueCommand = new RelayCommand(ReportIssue);
+ OpenResolvedBugsCommand = new RelayCommand(OpenResolvedBugs);
}
private void MachineEventsStateProvider_EventsResolved(object sender, IEnumerable<MachinesEvent> e)
@@ -649,10 +655,70 @@ namespace Tango.MachineStudio.UI.ViewModels
{
using (_notificationProvider.PushTaskItem("Uploading bug report..."))
{
- await TFSClient.UploadWorkItem(vm.WorkItem);
+ try
+ {
+ TFSClient.FinalizeBug(vm.WorkItem);
+ await TFSClient.UploadWorkItem(vm.WorkItem);
+ }
+ catch (Exception ex)
+ {
+ _notificationProvider.ShowError("An error occurred while trying to create the issue." + Environment.NewLine + ex.Message);
+ }
}
}, null);
}
+
+ private void OpenResolvedBugs()
+ {
+ ResolvedIssuesViewVM vm = null;
+
+ vm = new ResolvedIssuesViewVM(TFSClient, async (item) =>
+ {
+ //Approve
+ using (_notificationProvider.PushTaskItem("Approving issue..."))
+ {
+ vm.IsAvailable = false;
+ try
+ {
+ await TFSClient.CloseWorkItem(item);
+ }
+ catch (Exception ex)
+ {
+ _notificationProvider.ShowError("An error occurred while trying to update the issue." + Environment.NewLine + ex.Message);
+ }
+ vm.IsAvailable = true;
+
+ if (TFSClient.ResolvedWorkItems.Count == 0)
+ {
+ vm.Close();
+ }
+ }
+ }, async (item) =>
+ {
+ //Decline
+ using (_notificationProvider.PushTaskItem("Reactivating issue..."))
+ {
+ vm.IsAvailable = false;
+ try
+ {
+ await TFSClient.ReactivateWorkItem(item);
+ }
+ catch (Exception ex)
+ {
+ _notificationProvider.ShowError("An error occurred while trying to update the issue." + Environment.NewLine + ex.Message);
+ }
+
+ vm.IsAvailable = true;
+
+ if (TFSClient.ResolvedWorkItems.Count == 0)
+ {
+ vm.Close();
+ }
+ }
+ });
+
+ _notificationProvider.ShowModalDialog<ResolvedIssuesViewVM, ResolvedIssuesView>(vm, (_) => { }, null);
+ }
}
}
diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/ResolvedIssuesViewVM.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/ResolvedIssuesViewVM.cs
new file mode 100644
index 000000000..552880792
--- /dev/null
+++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/ResolvedIssuesViewVM.cs
@@ -0,0 +1,61 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Tango.Core.Commands;
+using Tango.MachineStudio.Common.Notifications;
+using Tango.MachineStudio.UI.TFS;
+using Tango.TFS;
+
+namespace Tango.MachineStudio.UI.ViewModels
+{
+ public class ResolvedIssuesViewVM : DialogViewVM
+ {
+ private Action<WorkItem> _onApprove;
+ private Action<WorkItem> _onDecline;
+
+ public TeamFoundationServiceExtendedClient TFSClient { get; set; }
+
+ public RelayCommand<WorkItem> ApproveCommand { get; set; }
+
+ public RelayCommand<WorkItem> DeclineCommand { get; set; }
+
+ private bool _isAvailable;
+
+ public bool IsAvailable
+ {
+ get { return _isAvailable; }
+ set { _isAvailable = value; RaisePropertyChangedAuto(); }
+ }
+
+ public ResolvedIssuesViewVM() : base()
+ {
+ IsAvailable = true;
+ ApproveCommand = new RelayCommand<WorkItem>(ApproveIssue);
+ DeclineCommand = new RelayCommand<WorkItem>(DeclineIssue);
+ }
+
+ public ResolvedIssuesViewVM(TeamFoundationServiceExtendedClient tfsClient, Action<WorkItem> onApprove, Action<WorkItem> onDecline) : this()
+ {
+ TFSClient = tfsClient;
+ _onApprove = onApprove;
+ _onDecline = onDecline;
+ }
+
+ private void DeclineIssue(WorkItem workItem)
+ {
+ _onDecline(workItem);
+ }
+
+ private void ApproveIssue(WorkItem workItem)
+ {
+ _onApprove(workItem);
+ }
+
+ public void Close()
+ {
+ Accept();
+ }
+ }
+}