private async Task<bool> AddSingleTimer(Issue jiraIssue, TimeSpan seedTime, DateTime startDate)
{
try
{
if (DataModel.LocalTimer)
{
NewTimerId = modelHelpers.Gallifrey.JiraTimerCollection.AddLocalTimer(DataModel.LocalTimerDescription, startDate, seedTime, DataModel.StartNow);
}
else
{
NewTimerId = modelHelpers.Gallifrey.JiraTimerCollection.AddTimer(jiraIssue, startDate, seedTime, DataModel.StartNow);
}
AddedTimer = true;
if (!DataModel.TimeEditable)
{
modelHelpers.Gallifrey.JiraTimerCollection.AddIdleTimer(NewTimerId, DataModel.IdleTimers);
}
}
catch (DuplicateTimerException ex)
{
var doneSomething = false;
if (seedTime.TotalMinutes > 0 || !DataModel.TimeEditable)
{
var result = await DialogCoordinator.Instance.ShowMessageAsync(modelHelpers.DialogContext, "Duplicate Timer", $"The Timer Already Exists On {DataModel.StartDate.Value.ToString("ddd, dd MMM")}, Would You Like To Add The Time?", MessageDialogStyle.AffirmativeAndNegative, new MetroDialogSettings { AffirmativeButtonText = "Yes", NegativeButtonText = "No", DefaultButtonFocus = MessageDialogResult.Affirmative });
if (result == MessageDialogResult.Affirmative)
{
if (DataModel.TimeEditable)
{
modelHelpers.Gallifrey.JiraTimerCollection.AdjustTime(ex.TimerId, seedTime.Hours, seedTime.Minutes, true);
}
else
{
modelHelpers.Gallifrey.JiraTimerCollection.AddIdleTimer(ex.TimerId, DataModel.IdleTimers);
}
doneSomething = true;
}
else
{
return false;
}
}
if (DataModel.StartNow)
{
modelHelpers.Gallifrey.JiraTimerCollection.StartTimer(ex.TimerId);
doneSomething = true;
}
if (!doneSomething)
{
await DialogCoordinator.Instance.ShowMessageAsync(modelHelpers.DialogContext, "Duplicate Timer", "This Timer Already Exists!");
return false;
}
NewTimerId = ex.TimerId;
}
return true;
}