From 565afd35baab8b2846ebc80a6802a375b3fd876e Mon Sep 17 00:00:00 2001 From: Roy Ben-Shabat Date: Sun, 1 Sep 2019 17:46:47 +0300 Subject: Added bug reporting module to PPC !! --- .../ViewModels/MainViewVM.cs | 183 +++++++++++++++++++++ 1 file changed, 183 insertions(+) create mode 100644 Software/Visual_Studio/PPC/Modules/Tango.PPC.BugReporting/ViewModels/MainViewVM.cs (limited to 'Software/Visual_Studio/PPC/Modules/Tango.PPC.BugReporting/ViewModels') diff --git a/Software/Visual_Studio/PPC/Modules/Tango.PPC.BugReporting/ViewModels/MainViewVM.cs b/Software/Visual_Studio/PPC/Modules/Tango.PPC.BugReporting/ViewModels/MainViewVM.cs new file mode 100644 index 000000000..e0cf17f79 --- /dev/null +++ b/Software/Visual_Studio/PPC/Modules/Tango.PPC.BugReporting/ViewModels/MainViewVM.cs @@ -0,0 +1,183 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Tango.Core.Commands; +using Tango.PPC.BugReporting.TFS; +using Tango.PPC.Common; +using Tango.Settings; +using Tango.TFS; +using Tango.Touch.Controls; + +namespace Tango.PPC.BugReporting.ViewModels +{ + /// + /// Represents the main view VM and entry point for . + /// + /// + public class MainViewVM : PPCViewModel + { + private TeamFoundationServicePPCClient _tfsService; + private BugReportingSettings _settings; + + public AutoCompleteProvider TeamMembersProvider { get; set; } + + private String _title; + public String Title + { + get { return _title; } + set { _title = value; RaisePropertyChangedAuto(); } + } + + private String _steps; + public String Steps + { + get { return _steps; } + set { _steps = value; RaisePropertyChangedAuto(); } + } + + private TeamMember _fromMember; + public TeamMember FromMember + { + get { return _fromMember; } + set { _fromMember = value; RaisePropertyChangedAuto(); } + } + + private TeamMember _toMember; + public TeamMember ToMember + { + get { return _toMember; } + set { _toMember = value; RaisePropertyChangedAuto(); } + } + + private Severity _severity; + public Severity Severity + { + get { return _severity; } + set { _severity = value; RaisePropertyChangedAuto(); } + } + + private List _members; + public List Members + { + get { return _members; } + set { _members = value; RaisePropertyChangedAuto(); } + } + + public RelayCommand SubmitCommand { get; set; } + + /// + /// Initializes a new instance of the class. + /// + public MainViewVM() + { + TeamMembersProvider = new AutoCompleteProvider((member, filter) => + { + if (filter != null && member != null) + { + return member.DisplayName.ToLower().Contains(filter.ToLower()); + } + else + { + return false; + } + }); + + Severity = Severity.Medium; + + SubmitCommand = new RelayCommand(SubmitBug); + } + + /// + /// Initializes a new instance of the class. + /// + /// The TFS service. + public MainViewVM(TeamFoundationServicePPCClient tfsService) : this() + { + _tfsService = tfsService; + _tfsService.Initialized += _tfsService_Initialized; + } + + private void _tfsService_Initialized(object sender, EventArgs e) + { + Members = _tfsService.Project.Members.ToList(); + } + + private async void SubmitBug() + { + if (String.IsNullOrWhiteSpace(Title)) + { + await NotificationProvider.ShowError("Report title is required."); + return; + } + + if (FromMember == null) + { + await NotificationProvider.ShowError("Created By team member is required."); + return; + } + + if (ToMember == null) + { + await NotificationProvider.ShowError("Assigned To team member is required."); + return; + } + + try + { + IsFree = false; + await _tfsService.SubmitBug(Title, Steps, FromMember, ToMember, Severity); + await NotificationProvider.ShowSuccess("Issue reported successfully"); + await NavigationManager.NavigateBack(); + + _settings.LastCreatedBy = FromMember.Email; + _settings.LastAssignedTo = ToMember.Email; + _settings.Save(); + + Title = null; + Steps = null; + Severity = Severity.Medium; + } + catch (Exception ex) + { + LogManager.Log(ex, "Error on TFS bug reporting."); + await NotificationProvider.ShowError("An error occurred while trying to submit the report. Please restart the application and try again."); + } + finally + { + IsFree = true; + } + } + + public async override void OnNavigatedTo() + { + base.OnNavigatedTo(); + + Title = null; + Steps = null; + Severity = Severity.Medium; + + if (!_tfsService.IsInitialized) + { + await NotificationProvider.ShowError("The reporting service was not initialized properly. Issue reporting is currently disabled."); + await NavigationManager.NavigateBack(); + return; + } + + FromMember = Members.SingleOrDefault(x => x.Email == _settings.LastCreatedBy); + ToMember = Members.SingleOrDefault(x => x.Email == _settings.LastAssignedTo); + } + + /// + /// Called when the application has been started + /// + public override void OnApplicationStarted() + { + //Start initializing here rather then in the constructor. + + _settings = SettingsManager.Default.GetOrCreate(); + } + } +} -- cgit v1.3.1