/// <summary> /// Get last week first and last business days /// </summary> /// <param name="lastweek">Enum for first or last</param> /// <returns>The requested date</returns> private string GetSpecificDate(LastWeek lastweek) { int dayWeek = (int)DateTime.Now.DayOfWeek; DateTime dateToFind; int daysToAdd = 0; try { if (lastweek == LastWeek.FirstDay) { dateToFind = DateTime.Now.AddDays((dayWeek + 6) * -1); if (holidays.Contains(dateToFind)) { daysToAdd = 1; } } else { dateToFind = DateTime.Now.AddDays((dayWeek + 2) * -1); if (holidays.Contains(dateToFind)) { daysToAdd = -1; } } } catch (Exception ex) { Logger.Log("Cannot get Specific date", Logger.LogType.Error); throw new Exception("Cannot get specific date" + ex.Message); } return(dateToFind.AddDays(daysToAdd).ToString("ddMMM").ToUpper()); }
protected override void OnInitialized() { ThisWeek = GetIssuesForDate(DateTime.UtcNow.Date); LastWeek = GetIssuesForDate(DateTime.UtcNow.AddDays(-7).Date); TotalOpenCount = ThisWeek.Count; ClosedThisWeekCount = LastWeek.Except(ThisWeek, IssueEntityComparer.Instance).Count(); OpenedThisWeekCount = ThisWeek.Except(LastWeek, IssueEntityComparer.Instance).Count(); GridData = new List <Row>(Math.Max(LastWeek.Count, ThisWeek.Count)); if (LastWeek is object && ThisWeek is object) { int i = 0, j = 0; for (; i < LastWeek.Count && j < ThisWeek.Count;) { if (LastWeek[i].Number == ThisWeek[j].Number) { GridData.Add(new Row(LastWeek[i++].Number, ThisWeek[j++].Number)); } else if (LastWeek[i].Number < ThisWeek[j].Number) { GridData.Add(new Row(LastWeek[i++].Number, null)); } else if (LastWeek[i].Number > ThisWeek[j].Number) { GridData.Add(new Row(null, ThisWeek[j++].Number)); } else { throw new InvalidOperationException("Shouldn't Happen"); } } for (; i < LastWeek.Count;) { GridData.Add(new Row(LastWeek[i++].Number, null)); } for (; j < ThisWeek.Count;) { GridData.Add(new Row(null, ThisWeek[j++].Number)); } } }