protected void linkButtonBottom_Command(object sender, CommandEventArgs e) { if (ddlBottomPersonel.Items.Count > 0) { JobTracker jobTracker = new JobTracker(); string jobtypeid = e.CommandArgument.ToString(); List<JobTracker> data = new List<JobTracker>(); string[] argument = jobtypeid.Split('|'); DateTime startdate = Convert.ToDateTime(txtBoxBottomFromDate.Text.Trim() + " 00:00:00"); DateTime enddate = Convert.ToDateTime(txtBoxBottomToDate.Text.Trim() + " 23:59:59"); if (argument.Count() > 3) { startdate = Convert.ToDateTime("1900-01-01"); enddate = DateTime.Now; } LinkButton lb = (LinkButton)sender; int deptid = Convert.ToInt32(ddlBottomDepartment.SelectedValue); string jobid = txtBoxBottomJobId.Text.Trim(); string customer = txtBoxBottomCustomer.Text.Trim(); int userid = Convert.ToInt32(ddlBottomPersonel.SelectedItem.Value); data = jobTracker.GetJobTrackerList(startdate, enddate,Convert.ToInt32(argument[0]),argument[2].Trim(), userid, deptid, jobid, customer,true); labelmodalBottom.Text = argument[1] + " - " + lb.Text+" - "+argument[2]; gridViewModalBottom.DataSource = data; gridViewModalBottom.DataBind(); programmaticModalPopupBottom.Show(); } }
private void GenerateStartMin(int hour, string selectedTime = "") { DateTime selectedDate = DateTime.Parse(txtBoxDate.Text); int userid = Convert.ToInt32(Session["UserId"]); bool isCurrentDate = false; JobTracker jobtracker = new JobTracker(); TimeSetting timeSetting = new TimeSetting(); timeSetting = timeSetting.GetTimeSetting(); TimeSpan startTime = new TimeSpan(); List<TimeSpan> availableTime = new List<TimeSpan>(); List<String> deleteMarker = new List<string>(); User user = new User(); user = user.GetUser(userid, selectedDate); TimeSpan cutOffTime = user.GetMyCutOfTime(); bool isComplete = Convert.ToBoolean(Session["Is2ndPartComplete"]); if (Session["StartTime"] != null) { string[] s = Session["StartTime"].ToString().Split(':'); startTime = new TimeSpan(Convert.ToInt32(s[0]), Convert.ToInt32(s[1]), 0); } for (int j = 0; j < 60; j += timeSetting.Interval) { if (isComplete == false && hour == cutOffTime.Hours) { if (new TimeSpan(hour, j, 0) < cutOffTime) { availableTime.Add(new TimeSpan(hour, j, 0)); deleteMarker.Add(availableTime.LastOrDefault().ToString()); } else { break; } } else { availableTime.Add(new TimeSpan(hour, j, 0)); deleteMarker.Add(availableTime.LastOrDefault().ToString()); } } if (selectedDate.CompareTo(DateTime.Today) == 0) { isCurrentDate = true; } Dictionary<string, string> mins = new Dictionary<string, string>(); var usedTime = jobtracker.GetJobTrackerList(userid, selectedDate,false); for (int i = 0; i < usedTime.Count; i++) { for (int j = 0; j < availableTime.Count; j++) { if (isCurrentDate == true && DateTime.Now.TimeOfDay < availableTime[j]) { deleteMarker[deleteMarker.LastIndexOf(availableTime[j].ToString())] = "deleted"; availableTime.RemoveAt(j); --j; } else if (usedTime[i].EndTime != null) { TimeSpan stime = Convert.ToDateTime(usedTime[i].StartTime).TimeOfDay; TimeSpan etime = new TimeSpan(Convert.ToDateTime(usedTime[i].EndTime).Hour, Convert.ToDateTime(usedTime[i].EndTime).Minute, 0); if (availableTime[j] >= stime && availableTime[j] < etime) { if (Session["StartTime"] != null && (startTime >= stime && startTime < etime)) continue; else { deleteMarker[deleteMarker.LastIndexOf(availableTime[j].ToString())] = "deleted"; availableTime.RemoveAt(j); --j; } } } } } if (usedTime.Count < 1) { for (int j = 0; j < availableTime.Count; j++) { if (isCurrentDate == true && DateTime.Now.TimeOfDay < availableTime[j]) { deleteMarker[deleteMarker.LastIndexOf(availableTime[j].ToString())] = "deleted"; availableTime.RemoveAt(j); --j; } } } //make sure that there is no gap between time if (selectedTime.Trim() == "") { if (Convert.ToInt32(modalDropDownStartTimeHour.Items[modalDropDownStartTimeHour.Items.Count - 1].Text) == hour && availableTime.Count > 1 && usedTime.Count > 0) { TimeSpan etime = new TimeSpan(Convert.ToDateTime(usedTime[0].EndTime).Hour, Convert.ToDateTime(usedTime[0].EndTime).Minute, 0); int index = -1; int markerindex = -1; bool deleteDetected = false; for (int i = 0; i < deleteMarker.Count; i++) { if (deleteDetected && deleteMarker[i] != "deleted") { markerindex = i; break; } if (deleteMarker[i] == "deleted") deleteDetected = true; } if (markerindex > -1) { for (int i = 0; i < availableTime.Count; i++) { if (availableTime[i].ToString() == deleteMarker[markerindex]) { index = i; break; } } if (index > -1 && (index + 1) < availableTime.Count) { availableTime.RemoveRange(index + 1, availableTime.Count - (index + 1)); //if (index > 0) // availableTime.RemoveRange(0, index); } } } } if (!isCurrentDate) { if (availableTime.Count > 0 && hour == Convert.ToInt32(modalDropDownStartTimeHour.Items[modalDropDownStartTimeHour.Items.Count - 1].Value)) { GenerateEndHour(availableTime[availableTime.Count - 1].Hours, availableTime[availableTime.Count - 1].Minutes, false); if (modalDropDownEndTimeHour.Items.Count == 0) availableTime.RemoveAt(availableTime.Count - 1); } } int curtime = 60; for (int i = 0; i < availableTime.Count; i++) { if (curtime != availableTime[i].Minutes) { curtime = availableTime[i].Minutes; mins.Add(curtime > 9 ? curtime.ToString() : "0" + curtime.ToString(), curtime > 9 ? curtime.ToString() : "0" + curtime.ToString()); } } modalDropDownStartTimeMin.DataSource = mins; modalDropDownStartTimeMin.DataTextField = "Key"; modalDropDownStartTimeMin.DataValueField = "Value"; modalDropDownStartTimeMin.DataBind(); if (selectedTime.Trim() != "") { string[] s = selectedTime.Split(':'); foreach (ListItem i in modalDropDownStartTimeMin.Items) { if (i.Text.Trim() == s[1].Trim()) i.Selected = true; } } else { TimeSpan s = DateTime.Now.TimeOfDay; double gap = 100000; int index = 0; for (int i = 0; i < modalDropDownStartTimeMin.Items.Count; i++) { System.TimeSpan sp = new System.TimeSpan(Convert.ToInt32(modalDropDownStartTimeHour.SelectedItem.Value), Convert.ToInt32(modalDropDownStartTimeMin.Items[i].Value), 0); double cgap = Math.Abs((sp.Subtract(s)).TotalMinutes); if (cgap == 0) { gap = cgap; index = i; break; } else if (cgap < gap) { gap = cgap; index = i; } } modalDropDownStartTimeMin.Items[index].Selected = true; } }
protected void InitializeGrid() { int userid = Convert.ToInt32(Session["UserId"]); JobTracker jobTracker = new JobTracker(); List<JobTracker> data = new List<JobTracker>(); DateTime date = Convert.ToDateTime(txtBoxDate.Text); data = jobTracker.GetJobTrackerList(userid,date,true); //Converter model = new Converter(); //DataTable table = model.ConvertToDataTable(data); gridJobTrack.DataSource = data; gridJobTrack.DataBind(); Session["StartTime"] = null; GenerateStartHour(); if (modalDropDownStartTimeHour.Items.Count < 1) { linkBtnAddJobTrack.Visible = false; } else { linkBtnAddJobTrack.Visible = true; } if (date.CompareTo(DateTime.Today) == 0)//If doing job track on the current day, show take a break button { BtnBreak.Text = "Take a break"; BtnBreak.CssClass = "buttongreen"; BtnBreak.Visible = true; if (data.Count > 0) { JobType jobtype = new JobType(); jobtype = jobtype.GetJobType(Convert.ToInt32(data[data.Count - 1].JobTypeId)); if (jobtype.IsDefaultBreak == true && data[data.Count - 1].Status == "Pending") { BtnBreak.Text = "End break"; BtnBreak.CssClass = "buttonred"; } } } else { BtnBreak.Visible = false; } }
//private void InitializeModalStartTime(string value = "") //{ // //GenerateStartHour(); // //GenerateStartMin(Convert.ToInt32(modalDropDownStartTimeHour.SelectedItem.Value)); // Time time = new Time(); // var timelist = time.GetTimeList(); // DateTime date = Convert.ToDateTime(txtBoxDate.Text); // List<Time> starttime = new List<Time>(); // TimeSpan curtime = TimeSpan.Parse(DateTime.Now.Hour + ":" + DateTime.Now.Minute); // if (date.CompareTo(DateTime.Today) == 0) // { // foreach (Time t in timelist) // { // TimeSpan selectedTime = TimeSpan.Parse(t.C24hrConversion); // if (selectedTime >= curtime) // { // time.Position = t.Position > 1 ? (t.Position-1) : t.Position; // break; // } // } // starttime = time.GetStartTimeList(time.Position); // } // else // { // starttime = time.GetStartTimeList(); // } // //remove used time // JobTracker jobtracker = new JobTracker(); // var joblist = jobtracker.GetJobTrackerList(Convert.ToInt32(Session["UserId"]), date); // for (int i = 0; i < joblist.Count; i++) // { // if (value.Trim() != "") // { // if (joblist[i].StartTime == DateTime.Parse(value)) // continue; // } // if (joblist[i].EndTime != null) // { // Time stime = time.GetTime(Convert.ToDateTime(joblist[i].StartTime)); // Time etime = time.GetTime(Convert.ToDateTime(joblist[i].EndTime)); // RemoveUsedStartTime(starttime, stime.Position, etime.Position); // } // } // // // modalDropDownStartTime.DataSource = starttime; // modalDropDownStartTime.DataTextField = "Description"; // modalDropDownStartTime.DataValueField = "C24hrConversion"; // modalDropDownStartTime.DataBind(); // if (value.Trim() == "") // { // bool hasSelected = false; // int maxindex = 0; // TimeSpan maxTime = new TimeSpan(23, 59, 0); // for (int i = 0; i < modalDropDownStartTime.Items.Count;i++) // { // TimeSpan selectedTime = TimeSpan.Parse(modalDropDownStartTime.Items[i].Value); // if (selectedTime < curtime && maxTime < selectedTime) // { // maxindex = i; // maxTime = selectedTime; // } // if (selectedTime >= curtime && hasSelected == false) // { // modalDropDownStartTime.Items[i].Selected = true; // hasSelected = true; // } // else // modalDropDownStartTime.Items[i].Selected = false; // } // if (hasSelected == false && modalDropDownStartTime.Items.Count > 0) // { // if (maxindex > 0) // modalDropDownStartTime.Items[maxindex].Selected = true; // else // modalDropDownStartTime.Items[modalDropDownStartTime.Items.Count - 1].Selected = true; // } // } // else // { // DateTime stime = DateTime.Parse(value); // string selectedTime = stime.Hour + ":" + stime.Minute; // foreach (ListItem i in modalDropDownStartTime.Items) // { // if (TimeSpan.Parse(i.Value.Trim()) == TimeSpan.Parse(selectedTime.Trim())) // { // i.Selected = true; // break; // } // } // } //} private void GenerateStartHour(string selectedTime = "") { Session["Is2ndPartComplete"] = true; DateTime selectedDate = DateTime.Parse(txtBoxDate.Text); //Get selected Time bool isCurrentDate = false; int userid = Convert.ToInt32(Session["UserId"]); JobTracker jobtracker = new JobTracker(); TimeSetting timeSetting = new TimeSetting(); timeSetting = timeSetting.GetTimeSetting(); TimeSpan startTime = new TimeSpan(); List<TimeSpan> availableTime = new List<TimeSpan>(); List<TimeSpan> timeMarker = new List<TimeSpan>(); List<TimeSpan> cutOffMarker = new List<TimeSpan>(); User user = new User(); user = user.GetUser(userid, selectedDate); TimeSpan cutOffTime = user.GetMyCutOfTime(); //generates the timelist if (Session["StartTime"] != null) { string[] s = Session["StartTime"].ToString().Split(':') ; startTime = new TimeSpan(Convert.ToInt32(s[0]), Convert.ToInt32(s[1]),0); } for (int i = 0; i < 24; i++) { for (int j = 0; j < 60; j += timeSetting.Interval) { availableTime.Add(new TimeSpan(i, j, 0)); timeMarker.Add(new TimeSpan(i, j, 0)); if (cutOffTime <= new TimeSpan(i, j, 0)) { cutOffMarker.Add(new TimeSpan(i,j,0)); } } } if (selectedDate.CompareTo(DateTime.Today) == 0) { isCurrentDate = true; } Dictionary<string, string> hour = new Dictionary<string, string>(); var usedTime = jobtracker.GetJobTrackerList(userid, selectedDate,false); for (int i = 0; i < usedTime.Count; i++) { for (int j = 0; j < availableTime.Count; j++) { if (isCurrentDate == true && DateTime.Now.TimeOfDay < availableTime[j]) { availableTime.RemoveAt(j); --j; } else if (usedTime[i].EndTime != null) { TimeSpan stime = Convert.ToDateTime(usedTime[i].StartTime).TimeOfDay; TimeSpan etime; if (Convert.ToDateTime(usedTime[i].EndTime).Date > Convert.ToDateTime(usedTime[i].StartTime).Date) //Convert 00:00:00 next day to 1.00:00:00 Timespan { etime = new TimeSpan(24,0,0); } else { etime = new TimeSpan(Convert.ToDateTime(usedTime[i].EndTime).Hour, Convert.ToDateTime(usedTime[i].EndTime).Minute, 0); } if (availableTime[j] >= stime && availableTime[j] < etime) { if (Session["StartTime"] != null && (startTime >= stime && startTime < etime)) continue; else { availableTime.RemoveAt(j); --j; } } } } } if (usedTime.Count < 1) { for (int j = 0; j < availableTime.Count; j++) { if (isCurrentDate == true && DateTime.Now.TimeOfDay < availableTime[j]) { availableTime.RemoveAt(j); --j; } } } if (TimeSpan.Parse(user.startTime) > TimeSpan.Parse(user.endTime)) //user with shifting hour { TimeClock timeclock = new TimeClock(); timeclock = timeclock.GetStartEndTimeForShifting(Convert.ToInt32(user.EmployeeNumber), Convert.ToDateTime(selectedDate.AddDays(-1).ToString("yyyy-MM-dd") + " " + cutOffTime.ToString("hh\\:mm\\:ss")), Convert.ToDateTime(selectedDate.ToString("yyyy-MM-dd") + " " + cutOffTime.ToString("hh\\:mm\\:ss")), false); bool notComplete = false; if (timeclock != null) { for (int i = 0; i < availableTime.Count; i++) { if (availableTime[i] >= timeclock.starttime.TimeOfDay && availableTime[i] < timeclock.endtime.TimeOfDay) //Check if the 2nd part of the previous day is completed { notComplete = true; Session["Is2ndPartComplete"] = false; break; } } } if (notComplete) { //make sure that there is no gap between time for (int i = 0; i < availableTime.Count; i++) { if (availableTime[i] >= cutOffTime) { if (i < availableTime.Count - 1) { availableTime.RemoveRange(i, availableTime.Count - i); break; } } } if (!isCurrentDate) { if (availableTime.Count > 0 && (availableTime[availableTime.Count - 1].Hours != availableTime[availableTime.Count - 2].Hours)) //remove last hour availableTime.RemoveAt(availableTime.Count - 1); } if (usedTime.Count > 0) { for (int i = 0; i < availableTime.Count; i++) { if (availableTime[i] != timeMarker[i]) { if (i < availableTime.Count - 1) { availableTime.RemoveRange(i + 1, availableTime.Count - i - 1); break; } } } } } else { if (!isCurrentDate) { if (availableTime.Count > 0 && (availableTime[availableTime.Count - 1].Hours != availableTime[availableTime.Count - 2].Hours)) //remove last hour availableTime.RemoveAt(availableTime.Count - 1); } if (usedTime.Count > 0) { int loop = 0; for (int i = 0; i < availableTime.Count; i++) { if (availableTime[i] >= cutOffTime) { if (availableTime[i] != cutOffMarker[loop]) { if (i < availableTime.Count - 1) { availableTime.RemoveRange(i + 1, availableTime.Count - i - 1); break; } } loop++; } } } } } else { if (!isCurrentDate) { if (availableTime.Count > 0 && (availableTime[availableTime.Count - 1].Hours != availableTime[availableTime.Count - 2].Hours)) //remove last hour availableTime.RemoveAt(availableTime.Count - 1); } //make sure that there is no gap between time if (usedTime.Count > 0) { for (int i = 0; i < availableTime.Count; i++) { if (availableTime[i] != timeMarker[i]) { if (i < availableTime.Count - 1) { availableTime.RemoveRange(i + 1, availableTime.Count - i - 1); break; } } } } } int curtime = 24; for (int i = 0; i < availableTime.Count; i++) { if (curtime != availableTime[i].Hours) { curtime = availableTime[i].Hours; hour.Add(curtime > 9 ? curtime.ToString() : "0" + curtime.ToString(), curtime > 9 ? curtime.ToString() : "0" + curtime.ToString()); } } modalDropDownStartTimeHour.DataSource = hour; modalDropDownStartTimeHour.DataTextField = "Key"; modalDropDownStartTimeHour.DataValueField = "Value"; modalDropDownStartTimeHour.DataBind(); if (selectedTime.Trim() != "") { string[] s = selectedTime.Split(':'); foreach (ListItem i in modalDropDownStartTimeHour.Items) { if (i.Text.Trim() == s[0].Trim()) i.Selected = true; } } else if (isCurrentDate == true && usedTime.Count < 1) //select the time closest to current time { int s = DateTime.Now.Hour; decimal gap = 1000; int index = 0; for (int i = 0; i < modalDropDownStartTimeHour.Items.Count; i++) { decimal cgap = Math.Abs(Convert.ToInt32(modalDropDownStartTimeHour.Items[i].Value) - s); if (cgap == 0) { gap = cgap; index = i; break; } else if (cgap < gap) { gap = cgap; index = i; } } modalDropDownStartTimeHour.Items[index].Selected = true; } else if (hour.Count < 1) { } else { modalDropDownStartTimeHour.Items[modalDropDownStartTimeHour.Items.Count - 1].Selected = true; } }