//Convert starting date to weekspan (all strings) public static string DateToWeekSpan(string dateStr) { //Parse value DateTime dateVal = new DateTime(); if (UtilDotNET.ValidateDate(dateStr)) { dateVal = UtilDotNET.StringToDate(dateStr); } else { return("ERROR: Please fix starting date from database table"); } //Last Monday int deltaToLastMonday = DayOfWeek.Monday - dateVal.DayOfWeek; DateTime lastMonday = dateVal.AddDays(deltaToLastMonday).Date; //This sunday int deltaToThisSunday = DayOfWeek.Sunday - dateVal.DayOfWeek; if (deltaToThisSunday <= (int)dateVal.DayOfWeek) { deltaToThisSunday += 7; } DateTime thisSunday = dateVal.AddDays(deltaToThisSunday).Date; string weekspan = String.Format("{0}-{1}", lastMonday.ToString("MM/dd/yy"), thisSunday.ToString("MM/dd/yy")); return(weekspan); }
/* ================================================================================ * Event for combo box items change * - Includes display * - Changes current workweek * ================================================================================ */ private void cmbWeekSpan_SelectedValueChanged(object sender, EventArgs e) { //When initialized disable buttons save, back, and forth. if (cmbWeekSpan.Text == "") { btnSave.Enabled = false; btnBack.Enabled = false; btnForth.Enabled = false; } else { btnSave.Enabled = true; btnBack.Enabled = true; btnForth.Enabled = true; //Disable forth DateTime cmbDate = WorkWeek.LastBeginningOfWeek(currentWorkWeek.Week); //Date we are in DateTime cmbMonday = WorkWeek.LastBeginningOfWeek(cmbDate.ToString()); DateTime date = UtilDotNET.StringToDate(WorkWeek.ConvertWeekSpanToBeginningOfWeek(cmbWeekSpan.Text)); //Date we want to go to (because it change) //MessageBox.Show(cmbMonday + " " + date); //Only execute on different date selections if (cmbMonday != date) { //Load corresponding week int currentIndex = cmbWeekSpan.Items.IndexOf(cmbWeekSpan.Text); currentWorkWeek = employeeWorkWeekList[currentIndex]; Display(currentWorkWeek); } } }
/* ==================================================== * GetLastMondayFromDate * > Error-catch any possible undesirable change in table values * ==================================================== */ public static DateTime LastBeginningOfWeek(string dateStr) { DateTime date = UtilDotNET.StringToDate(dateStr); //Last Monday if (date != DateTime.MinValue) { int deltaToLastMonday = DayOfWeek.Monday - date.DayOfWeek; if (deltaToLastMonday > 0) { deltaToLastMonday -= 7; } DateTime lastMonday = date.AddDays(deltaToLastMonday).Date; return(lastMonday); } else { return(date); } }