protected void gridLeftBtnAcceptAll_Click(object sender, EventArgs e)
        {
            foreach (GridViewRow row in gridViewLeftPanel1.Rows)
            {
                CheckBox cb = (CheckBox)row.FindControl("gridLeftChkBoxSelect");
                if (cb.Checked)
                {
                    int userid = Convert.ToInt32(Session["UserId"]);
                    JobTracker jobtracker = new JobTracker();
                    JobTrackerHistory jtHist = new JobTrackerHistory();
                    //var data = jobtracker.GetRequestNeededApproval(userid);
                    Label jobtrackId = (Label)row.FindControl("gridLeftlblJobTrackId");
                    jobtracker = jobtracker.GetJobTracker(Convert.ToInt32(jobtrackId.Text), false);

                    if (jobtracker.ActionRequest == "Delete")
                    {
                        jobtracker.Status = "Approved";
                        jtHist = jtHist.ConvertToHistory(jobtracker);
                        jobtracker.Delete(jobtracker.Id);
                    }
                    else
                    {
                        jobtracker.Status = "Approved";
                        jobtracker.Update(jobtracker);
                        jtHist = jtHist.ConvertToHistory(jobtracker);
                    }
                    jtHist.Insert(jtHist);
                }
            }
            gridLeftChkBoxSelectAll.Checked = false;
            InitializeGridViewLeftPanel1(new List<string>());
            InitializeGridViewLeftPanel2();
            InitializeGridViewLeftPanel3();
        }
 protected void lnkBtn_Command(object sender, CommandEventArgs e)
 {
     if (e.CommandName == "JobOverviewDetails")
     {
         JobTracker j = new JobTracker();
         j = j.GetJobTracker(Convert.ToInt32(e.CommandArgument),false);
         modalDetailLabelName.Text = j.fullname;
         modalDetailLabelJobType.Text = j.jobtype;
         modalDetailLabelJobStatus.Text = j.JobStatus;
         modalDetailLabelDate.Text = Convert.ToDateTime(j.ScheduleDate).ToString("dd-MMM-yyyy");
         modalDetailLabelStartTime.Text = Convert.ToDateTime(j.StartTime).ToString("hh:mm tt");
         modalDetailLabelEndTime.Text = Convert.ToDateTime(j.EndTime).ToString("hh:mm tt");
         modalDetailTxtBoxRemarks.Text = j.Remarks;
         this.programmaticModalPopupDetail.Show();
     }
     else if (e.CommandName == "JobOverviewSummary")
     {
         JobTypeDepartment jobtypeDepartment = new JobTypeDepartment();
         JobTracker jobtracker = new JobTracker();
         string argument = e.CommandArgument.ToString();
         string[] s = argument.Split('|');
         var jobtypes = jobtypeDepartment.GetJobOverviewJobType(Convert.ToInt32(s[0]));
         Dictionary<string, string> repeaterdata = new Dictionary<string, string>();
         for (int i = 0; i < jobtypes.Count; i++)
         {
             JobTracker j = jobtracker.GetJobTrackerJobOverview(jobtypes[i].Id, s[2], s[1], Convert.ToDateTime(txtBoxStartDate.Text + " 00:00:00"), Convert.ToDateTime(txtBoxEndDate.Text + " 23:59:59"), Convert.ToInt32(s[0]));
             if (j == null)
             {
                 repeaterdata.Add(jobtypes[i].Description, "");
             }
             else
             {
                 repeaterdata.Add(jobtypes[i].Description, j.JobStatus + " " + Convert.ToDateTime(j.EndTime).ToString("dd-MMM-yyyy"));
             }
         }
         modalSummaryRepeater.DataSource = repeaterdata;
         modalSummaryRepeater.DataBind();
         programmaticModalPopupSummary.Show();
     }
 }
        protected void modalBtnConfirm_Command(object sender, CommandEventArgs e)
        {
            string[] remarks = modalTxtBoxRemarks.Text.Replace("\n"," ").Trim().Split(' ');
            int counter = 0;
            Regex rgx = new Regex("[^a-zA-Z0-9]");
            for (int i = 0; i < remarks.Length; i++)
            {
                if (rgx.Replace(remarks[i],"").Trim() != "")
                {
                    counter++;
                }
            }
            if (counter > 2)
            {
                int userid = Convert.ToInt32(Session["UserId"]);
                if (e.CommandName == "RejectAll")
                {
                    foreach (GridViewRow row in gridViewLeftPanel1.Rows)
                    {
                        CheckBox cb = (CheckBox)row.FindControl("gridLeftChkBoxSelect");
                        if (cb.Checked)
                        {
                            JobTracker jobtracker = new JobTracker();
                            JobTrackerHistory jtHist = new JobTrackerHistory();
                            Label jobtrackId = (Label)row.FindControl("gridLeftlblJobTrackId");
                            jobtracker = jobtracker.GetJobTracker(Convert.ToInt32(jobtrackId.Text), false);
                            jobtracker.ApprovedBy = userid;
                            jobtracker.LastUpdatedBy = userid;
                            jobtracker.LastUpdateDate = DateTime.Now;
                            jobtracker.SupervisorRemarks = modalTxtBoxRemarks.Text;
                            jobtracker.Status = "Rejected";
                            jobtracker.Update(jobtracker);
                            jtHist = jtHist.ConvertToHistory(jobtracker);
                            jtHist.Insert(jtHist);
                        }
                    }
                    gridLeftChkBoxSelectAll.Checked = false;
                    InitializeGridViewLeftPanel1(new List<string>());
                }
                else
                {
                    JobTracker jobtracker = new JobTracker();
                    JobTrackerHistory jtHist = new JobTrackerHistory();
                    int id = Convert.ToInt32(e.CommandArgument);
                    jobtracker = jobtracker.GetJobTracker(id, false);
                    jobtracker.ApprovedBy = userid;
                    jobtracker.LastUpdatedBy = userid;
                    jobtracker.LastUpdateDate = DateTime.Now;
                    jobtracker.SupervisorRemarks = modalTxtBoxRemarks.Text;
                    jobtracker.Status = "Rejected";
                    jobtracker.Update(jobtracker);

                    jtHist = jtHist.ConvertToHistory(jobtracker);
                    jtHist.Insert(jtHist);
                    List<string> selectedJobtrackerId = GetGridViewLeftPanel1SelectedJobIds();
                    InitializeGridViewLeftPanel1(selectedJobtrackerId);
                }
                InitializeGridViewLeftPanel2();
                InitializeGridViewLeftPanel3();
            }
            else
            {
                modalBottomLabelError.Text = "Minimum Three(3) Words";
                modalBottomLabelError.Visible = true;
                programmaticModalPopup.Show();
            }
        }
 protected void gridViewLeftPanel1_RowCommand(object sender, GridViewCommandEventArgs e)
 {
     int userid = Convert.ToInt32(Session["UserId"]);
     int index = Convert.ToInt32(e.CommandArgument);
     JobTracker jobtracker = new JobTracker();
     JobTrackerHistory jtHist = new JobTrackerHistory();
     //var data = jobtracker.GetRequestNeededApproval(userid);
     Label jobtrackId = (Label)gridViewLeftPanel1.Rows[index].FindControl("gridLeftlblJobTrackId");
     jobtracker = jobtracker.GetJobTracker(Convert.ToInt32(jobtrackId.Text),false);
     //data[index].LastUpdateDate = DateTime.Now;
     //data[index].LastUpdatedBy = userid;
     jobtracker.ApprovedBy = userid;
     jobtracker.LastUpdateDate = DateTime.Now;
     jobtracker.LastUpdatedBy = userid;
     if(e.CommandName == "AcceptRequest")
     {
         if (jobtracker.ActionRequest == "Delete")
         {
             jobtracker.Status = "Approved";
             jtHist = jtHist.ConvertToHistory(jobtracker);
             jobtracker.Delete(jobtracker.Id);
         }
         else
         {
             jobtracker.Status = "Approved";
             jobtracker.Update(jobtracker);
             jtHist = jtHist.ConvertToHistory(jobtracker);
         }
         jtHist.Insert(jtHist);
         List<string> selectedJobtrackerId = GetGridViewLeftPanel1SelectedJobIds();
         InitializeGridViewLeftPanel1(selectedJobtrackerId);
         InitializeGridViewLeftPanel2();
         InitializeGridViewLeftPanel3();
     }
     else if (e.CommandName == "RejectRequest")
     {
         //data[index].Status = "Rejected";
         modalBottomLabelError.Visible = false;
         modalBottomLabelError.Text = "";
         modalBtnConfirm.CommandArgument = jobtracker.Id.ToString();
         modalBtnConfirm.CommandName = "Reject";
         modalTxtBoxRemarks.Text = "";
         programmaticModalPopup.Show();
         //jobtracker.Update(data[index]);
         //InitializeGridViewLeft();
     }
 }
        protected void gridViewJobTrack_Command(object sender, GridViewCommandEventArgs e)
        {
            if (e.CommandName == "Select")
            {
                modalBtnDelete.Visible = true;
                DateTime date = Convert.ToDateTime(txtBoxDate.Text);
                int i = Convert.ToInt32(e.CommandArgument);
                int userid = Convert.ToInt32(Session["UserId"]);
                int jobtrackerId = Convert.ToInt32(((Label)gridJobTrack.Rows[i].FindControl("labelJobTrackId")).Text);
                bool noError = true;
                if (date.CompareTo(DateTime.Today) < 0)
                {
                    SupervisorMapping supmap = new SupervisorMapping();
                    if (supmap.GetActiveSupervisors(userid).Count < 1)
                    {
                        noError = false;
                        panelAlertHeader2.CssClass = "modalAlertHeader";
                        alertModalBtnOK2.CssClass = "buttonalert";
                        labelAlertHeader2.Text = "Error";
                        labelAlertMessage2.Text = "Sorry you cannot edit job on previous date without a direct supervisor. Please contact your system administrator.";
                        programmaticAlertModalPopup2.Show();
                    }
                }
                else
                {
                    JobTracker jobtracker = new JobTracker();
                    string errMsg = "";
                    errMsg = jobtracker.GetError(userid, date, 7);
                    if (errMsg.Trim() != "")
                    {
                        noError = false;
                        panelAlertHeader2.CssClass = "modalAlertHeader";
                        alertModalBtnOK2.CssClass = "buttonalert";
                        labelAlertHeader2.Text = "Error";
                        labelAlertMessage2.Text = errMsg.Trim() + " Please settle error first.";
                        programmaticAlertModalPopup2.Show();
                    }
                }
                if(noError)
                {
                    JobTracker jobtracker = new JobTracker();
                    jobtracker = jobtracker.GetJobTracker(jobtrackerId,false);
                    //List<JobTracker> datalist = new List<JobTracker>();
                    //datalist = jobtracker.GetJobTrackerList(userid, date);
                    modalLabelError.Text = "";
                    modalLabelError.Visible = false;
                    modalBtnSubmit.CommandArgument = jobtracker.Id.ToString();
                    modalBtnDelete.CommandArgument = jobtracker.Id.ToString();

                    InitializeModalJobType(jobtracker.JobTypeId.ToString());
                    //InitializeModalStartTime(jobtracker.StartTime.ToString());
                    InitializeModalJobStatus(jobtracker.JobStatus == null ? "" : jobtracker.JobStatus.Trim());

                    bool generateBlank = false;
                    if (date.CompareTo(DateTime.Today) == 0)
                        generateBlank = true;

                    Session["StartTime"] = Convert.ToDateTime(jobtracker.StartTime).TimeOfDay.ToString();
                    GenerateStartHour(Convert.ToDateTime(jobtracker.StartTime).TimeOfDay.ToString());
                    GenerateStartMin(Convert.ToInt32(modalDropDownStartTimeHour.SelectedItem.Value), Convert.ToDateTime(jobtracker.StartTime).TimeOfDay.ToString());

                    string endtime = "";
                    if (jobtracker.EndTime != null)
                        endtime = jobtracker.EndTime.ToString();
                    //InitializeModalEndTime(endtime);

                    GenerateEndHour(Convert.ToInt32(modalDropDownStartTimeHour.SelectedItem.Value), Convert.ToInt32(modalDropDownStartTimeMin.SelectedItem.Value), generateBlank, endtime == "" ? "" : Convert.ToDateTime(jobtracker.EndTime).ToString());
                    GenerateEndMin(Convert.ToInt32(modalDropDownStartTimeHour.SelectedItem.Value), Convert.ToInt32(modalDropDownStartTimeMin.SelectedItem.Value), modalDropDownEndTimeHour.SelectedItem.Text.Trim(), endtime == "" ? "" : Convert.ToDateTime(jobtracker.EndTime).TimeOfDay.ToString());
                    //if (datalist[i].ApprovedBy != null && datalist[i].ApprovedBy != userid && datalist[i].ApprovedBy != 0)
                    //{
                    //    //InitializeModalSupervisor(datalist[i].ApprovedBy.ToString());
                    //    //modalLabelSupervisor.Visible = true;
                    //    //modalLabelSupColon.Visible = true;
                    //    //modalDropDownSupervisor.Visible = true;
                    //}
                    //else if (date.CompareTo(DateTime.Today) < 0)
                    //{
                    //InitializeModalSupervisor();
                    //modalLabelSupervisor.Visible = true;
                    //modalLabelSupColon.Visible = true;
                    //modalDropDownSupervisor.Visible = true;
                    //}
                    //else
                    //{
                    //    //modalLabelSupervisor.Visible = false;
                    //    //modalLabelSupColon.Visible = false;
                    //    //modalDropDownSupervisor.Visible = false;
                    //}
                    if (jobtracker.JobIdNumber != null && jobtracker.JobIdNumber.Trim() != "")
                    {

                        modalTxtBoxJobId.Text = jobtracker.JobIdNumber;
                        JobTracker jobTracker = new JobTracker();
                        jobTracker = jobTracker.GenerateHWAndSW(modalTxtBoxJobId.Text.Trim());
                        modallabelBoxJobDescription.Text = jobTracker.Description;
                        modallabelCustomer.Text = jobTracker.Customer;
                        modalLabelHWSW.Text = jobTracker.HWNo;
                        modalLabelHWSW.ToolTip = jobTracker.SWNo;
                        modalLabelEvalNo.Text = jobTracker.EvalNo;
                    }

                    modalTxtBoxRemarks.Text = jobtracker.Remarks == null ? "" : jobtracker.Remarks.Trim();

                    Page.Validate();
                    this.programmaticModalPopup.Show();
                }
            }
        }
        protected void modalBtnSubmit_Command(object sender, CommandEventArgs e)
        {
            bool haserror = false;
            string errormessage = "";

            if (modalLabelError.Visible == true)
            {
                errormessage = modalLabelError.Text;
                haserror = true;
            }
            else if (modalReqJobStatus.Enabled == true && modalDropDownJobStatus.SelectedItem.Value == "Completed" && modalDropDownEndTimeHour.SelectedItem.Text == "--")
            {
                errormessage = "Cannot set job status as Completed without selecting End Time.";
                haserror = true;
            }

            if (haserror)
            {
                //System.Web.HttpContext.Current.Response.Write("<SCRIPT LANGUAGE='JavaScript'>alert('Error: "+errormessage+"')</SCRIPT>");
                panelAlertHeader2.CssClass = "modalAlertHeader";
                alertModalBtnOK2.CssClass = "buttonalert";
                labelAlertHeader2.Text = "Error";
                labelAlertMessage2.Text = errormessage;
                this.programmaticModalPopup.Show();
                programmaticAlertModalPopup2.Show();

            }
            else
            {
                DateTime selectedDate = DateTime.Parse(txtBoxDate.Text);
                int userid = Convert.ToInt32(Session["UserId"]);
                JobTracker jobTracker = new JobTracker();
                JobTrackerHistory jtHist = new JobTrackerHistory();
                //DateTime startTime = DateTime.Parse(selectedDate.Year + "-" + selectedDate.Month + "-" + selectedDate.Day + " " + modalDropDownStartTime.SelectedValue + ":00");
                DateTime startTime = DateTime.Parse(selectedDate.Year + "-" + selectedDate.Month + "-" + selectedDate.Day + " " + modalDropDownStartTimeHour.SelectedValue+":"+modalDropDownStartTimeMin.SelectedValue + ":00");
                //DateTime endTime = DateTime.Parse(selectedDate.Year + "-" + selectedDate.Month + "-" + selectedDate.Day + " " + modalDropDownEndTime.SelectedValue + ":00");
                DateTime endTime;
                if (modalDropDownEndTimeHour.SelectedValue == "24") //end date selected is 12:00 AM next day
                {
                    endTime = DateTime.Parse((selectedDate.AddDays(1)).Year + "-" + (selectedDate.AddDays(1)).Month + "-" + (selectedDate.AddDays(1)).Day + " 00:00:00");
                }
                else
                {
                    endTime = DateTime.Parse(selectedDate.Year + "-" + selectedDate.Month + "-" + selectedDate.Day + " " + modalDropDownEndTimeHour.SelectedValue + ":" + modalDropDownEndTimeMin.SelectedValue + ":00");
                }
                jobTracker.StartTime = startTime;
                jobTracker.ScheduleDate = selectedDate;
                //if (modalDropDownEndTime.SelectedItem.Text != "Select End Time")
                if (modalDropDownEndTimeHour.SelectedItem.Text != "--")
                {
                    jobTracker.EndTime = endTime;
                }
                jobTracker.JobTypeId = Convert.ToInt32(modalDropDownJobType.SelectedValue);
                jobTracker.JobIdNumber = modalTxtBoxJobId.Text.Trim();
                jobTracker.Remarks = modalTxtBoxRemarks.Text.Trim();
                jobTracker.LastUpdateDate = DateTime.Now;
                jobTracker.LastUpdatedBy = userid;
                jobTracker.UserId = userid;
                jobTracker.HWNo = modalLabelHWSW.Text;
                jobTracker.SWNo = modalLabelHWSW.ToolTip;
                jobTracker.Customer = modallabelCustomer.Text;
                jobTracker.EvalNo = modalLabelEvalNo.Text;
                jobTracker.Description = modallabelBoxJobDescription.Text;
                //if (jobTracker.JobIdNumber.Trim() != "")
                jobTracker.JobStatus = modalDropDownJobStatus.SelectedItem.Value;
                if (modalReqJobStatus.Enabled == false) // Put blank on task that does not require job status.
                    jobTracker.JobStatus = "";

                if (selectedDate.CompareTo(DateTime.Today) == 0)
                {
                    jobTracker.ApprovedBy = userid;
                    //if (modalDropDownEndTime.SelectedItem.Text != "Select End Time")
                    if (modalDropDownEndTimeHour.SelectedItem.Text != "--")
                        jobTracker.Status = "Approved";
                    else
                        jobTracker.Status = "Pending";
                }
                else
                {
                    jobTracker.Status = "For Approval";
                }

                if (e.CommandArgument.ToString() == "Add")
                {
                    if (selectedDate.CompareTo(DateTime.Today) != 0)
                    {
                        if ((DateTime.Now.Subtract(startTime)).TotalHours < 24)
                        {
                            jobTracker.Status = "Approved";
                            jobTracker.ApprovedBy = userid;
                        }
                    }
                    jobTracker.CreateDate = DateTime.Now;
                    jobTracker.SupervisorRemarks = "";
                    jobTracker.CreatedBy = userid;
                    jobTracker.ActionRequest = "Add";
                    jobTracker.Insert(jobTracker);
                    jobTracker = jobTracker.GetJobTracker(Convert.ToInt32(jobTracker.CreatedBy), Convert.ToInt32(jobTracker.LastUpdatedBy), Convert.ToDateTime(jobTracker.StartTime), Convert.ToInt32(jobTracker.JobTypeId), jobTracker.ActionRequest, jobTracker.Status,false);
                }
                else
                {
                    if (selectedDate.CompareTo(DateTime.Today) != 0)
                    {
                        if ((DateTime.Now.Subtract(startTime)).TotalHours < 2)
                        {
                            jobTracker.Status = "Approved";
                            jobTracker.ApprovedBy = userid;
                        }
                    }
                    jobTracker.Id = Convert.ToInt32(e.CommandArgument);
                    jobTracker.ActionRequest = "Update";
                    jobTracker.Update(jobTracker);
                }
                //jobTracker.CreateDate = DateTime.Now;
                jtHist = jtHist.ConvertToHistory(jobTracker);
                jtHist.Insert(jtHist);
                InitializeWorkingHours();
                InitializeGrid();
                this.programmaticModalPopup.Hide();
            }
        }
 protected void modalBtnDelete_Command(object sender, CommandEventArgs e)
 {
     DateTime selectedDate = DateTime.Parse(txtBoxDate.Text);
     int userid = Convert.ToInt32(Session["UserId"]);
     JobTracker jobTracker = new JobTracker();
     JobTrackerHistory jtHist = new JobTrackerHistory();
     jobTracker.Id = Convert.ToInt32(e.CommandArgument);
     jobTracker = jobTracker.GetJobTracker(jobTracker.Id,false);
     if (selectedDate.CompareTo(DateTime.Today) == 0 || (jobTracker.Status == "Rejected" && jobTracker.ActionRequest != "Delete"))
     {
         jobTracker.ActionRequest = "Delete";
         jobTracker.Status = "Approved";
         jobTracker.LastUpdateDate = DateTime.Now;
         jobTracker.LastUpdatedBy = userid;
         jtHist = jtHist.ConvertToHistory(jobTracker);
         jobTracker.Delete(jobTracker.Id);
     }
     else
     {
         jobTracker.ActionRequest = "Delete";
         jobTracker.Status = "For Approval";
         jobTracker.LastUpdateDate = DateTime.Now;
         jobTracker.LastUpdatedBy = userid;
         jobTracker.Update(jobTracker);
         jtHist = jtHist.ConvertToHistory(jobTracker);
     }
     jtHist.Insert(jtHist);
     InitializeWorkingHours();
     InitializeGrid();
 }
        private void RunBreakButtonActionForShifting()
        {
            int userid = Convert.ToInt32(Session["UserId"]);
            JobType jobtype = new JobType();
            jobtype = jobtype.GetDefaultBreak();
            DateTime selectedDate = DateTime.Parse(txtBoxDate.Text);
            JobTracker jobtracker = new JobTracker();
            int jobtrackid = 0;
            bool noError = true;
            User user = new User();
            user = user.GetUser(userid, selectedDate);
            TimeSpan cutOffTime = user.GetMyCutOfTime();

            if (BtnBreak.Text == "Take a break")
            {
                DateTime startTime = new DateTime();
                if (gridJobTrack.Rows.Count > 0)
                {
                    jobtrackid = Convert.ToInt32(((Label)gridJobTrack.Rows[gridJobTrack.Rows.Count - 1].FindControl("labelJobTrackId")).Text);
                    jobtracker = jobtracker.GetJobTracker(jobtrackid, false);
                    JobType jtype = jobtype.GetJobType(Convert.ToInt32(jobtracker.JobTypeId));
                    if (Convert.ToDateTime(jobtracker.StartTime).TimeOfDay < cutOffTime && DateTime.Now.TimeOfDay >= cutOffTime)
                    {
                        if (jobtracker.EndTime == null)
                        {
                            noError = false;
                            TimeSetting tsetting = new TimeSetting();
                            tsetting = tsetting.GetTimeSetting();
                            panelAlertHeader2.CssClass = "modalAlertHeader";
                            alertModalBtnOK2.CssClass = "buttonalert";
                            labelAlertHeader2.Text = "Error";
                            labelAlertMessage2.Text = "Please close all task first.";
                        }
                        else
                        {
                            GenerateStartHour();
                            GenerateStartMin(Convert.ToInt32(modalDropDownStartTimeHour.SelectedItem.Value));
                            startTime = DateTime.Parse(selectedDate.Year + "-" + selectedDate.Month + "-" + selectedDate.Day + " " + modalDropDownStartTimeHour.SelectedValue + ":" + modalDropDownStartTimeMin.SelectedValue + ":00");
                        }
                    }
                    else
                    {
                        if (jobtracker.EndTime == null)
                        {
                            DateTime stime = Convert.ToDateTime(jobtracker.StartTime);
                            GenerateEndHour(stime.Hour, stime.Minute, true);
                            GenerateEndMin(stime.Hour, stime.Minute, "--");
                            modalDropDownEndTimeHour.SelectedIndex = (modalDropDownEndTimeHour.Items.Count - 1);
                            GenerateEndMin(stime.Hour, stime.Minute, modalDropDownEndTimeHour.SelectedItem.Text.Trim(), modalDropDownEndTimeMin.Items.Count == 0 ? "" : modalDropDownEndTimeHour.Items[modalDropDownEndTimeHour.Items.Count - 1].Text.Trim() + ":" + modalDropDownEndTimeMin.SelectedItem.Text.Trim());
                            if (modalDropDownEndTimeHour.Items[modalDropDownEndTimeHour.Items.Count - 1].Text != "--")
                            {
                                if (modalDropDownEndTimeHour.SelectedValue == "24") //end date selected is 12:00 AM next day
                                {
                                    jobtracker.EndTime = DateTime.Parse((selectedDate.AddDays(1)).Year + "-" + (selectedDate.AddDays(1)).Month + "-" + (selectedDate.AddDays(1)).Day + " 00:00:00");
                                }
                                else
                                {
                                    jobtracker.EndTime = DateTime.Parse(selectedDate.Year + "-" + selectedDate.Month + "-" + selectedDate.Day + " " + modalDropDownEndTimeHour.Items[modalDropDownEndTimeHour.Items.Count - 1].Value + ":" + modalDropDownEndTimeMin.Items[modalDropDownEndTimeMin.Items.Count - 1].Value + ":00");
                                }
                                jobtracker.Status = "Approved";
                                jobtracker.ApprovedBy = userid;
                                jobtracker.ActionRequest = "Update";
                                jobtracker.Update(jobtracker);
                                startTime = Convert.ToDateTime(jobtracker.EndTime);
                                InitializeGrid();
                            }
                            else
                            {
                                noError = false;
                                TimeSetting tsetting = new TimeSetting();
                                tsetting = tsetting.GetTimeSetting();
                                panelAlertHeader2.CssClass = "modalAlertHeader";
                                alertModalBtnOK2.CssClass = "buttonalert";
                                labelAlertHeader2.Text = "Error";
                                labelAlertMessage2.Text = "Cannot take a break without spending at least " + tsetting + " minutes on the last task.";
                            }
                        }
                        else
                        {
                            startTime = Convert.ToDateTime(jobtracker.EndTime);
                        }
                    }
                }
                else
                {
                    GenerateStartHour();
                    GenerateStartMin(Convert.ToInt32(modalDropDownStartTimeHour.SelectedItem.Value));
                    startTime = DateTime.Parse(selectedDate.Year + "-" + selectedDate.Month + "-" + selectedDate.Day + " " + modalDropDownStartTimeHour.SelectedValue + ":" + modalDropDownStartTimeMin.SelectedValue + ":00");
                }
                if (noError)
                {
                    jobtracker = new JobTracker();
                    jobtracker.StartTime = startTime;
                    jobtracker.Status = "Pending";
                    jobtracker.JobStatus = "";
                    jobtracker.ApprovedBy = userid;
                    jobtracker.ActionRequest = "Add";
                    jobtracker.UserId = userid;
                    jobtracker.CreateDate = DateTime.Now;
                    jobtracker.CreatedBy = userid;
                    jobtracker.LastUpdateDate = DateTime.Now;
                    jobtracker.LastUpdatedBy = userid;
                    jobtracker.Description = jobtype.Description;
                    jobtracker.JobTypeId = jobtype.Id;
                    jobtracker.ScheduleDate = selectedDate;
                    jobtracker.Remarks = "";
                    jobtracker.Insert(jobtracker);
                    InitializeGrid();
                }
                else
                {
                    programmaticAlertModalPopup2.Show();
                }
            }
            else if (BtnBreak.Text == "End break")
            {
                jobtrackid = Convert.ToInt32(((Label)gridJobTrack.Rows[gridJobTrack.Rows.Count - 1].FindControl("labelJobTrackId")).Text);
                jobtracker = jobtracker.GetJobTracker(jobtrackid, false);
                jobtracker.LastUpdateDate = DateTime.Now;
                jobtracker.LastUpdatedBy = userid;
                if (jobtracker.JobTypeId == jobtype.Id)
                {
                    DateTime stime = Convert.ToDateTime(jobtracker.StartTime);
                    GenerateEndHour(stime.Hour, stime.Minute, true);
                    GenerateEndMin(stime.Hour, stime.Minute, "--");
                    modalDropDownEndTimeHour.SelectedIndex = (modalDropDownEndTimeHour.Items.Count - 1);
                    GenerateEndMin(stime.Hour, stime.Minute, modalDropDownEndTimeHour.SelectedItem.Text.Trim(), modalDropDownEndTimeMin.Items.Count == 0 ? "" : modalDropDownEndTimeHour.Items[modalDropDownEndTimeHour.Items.Count - 1].Text.Trim() + ":" + modalDropDownEndTimeMin.SelectedItem.Text.Trim());
                    if (modalDropDownEndTimeHour.Items[modalDropDownEndTimeHour.Items.Count - 1].Text != "--")
                    {
                        if (modalDropDownEndTimeHour.SelectedValue == "24") //end date selected is 12:00 AM next day
                        {
                            jobtracker.EndTime = DateTime.Parse((selectedDate.AddDays(1)).Year + "-" + (selectedDate.AddDays(1)).Month + "-" + (selectedDate.AddDays(1)).Day + " 00:00:00");
                        }
                        else
                        {
                            jobtracker.EndTime = DateTime.Parse(selectedDate.Year + "-" + selectedDate.Month + "-" + selectedDate.Day + " " + modalDropDownEndTimeHour.Items[modalDropDownEndTimeHour.Items.Count - 1].Value + ":" + modalDropDownEndTimeMin.Items[modalDropDownEndTimeMin.Items.Count - 1].Value + ":00");
                        }
                        jobtracker.Status = "Approved";
                        jobtracker.ApprovedBy = userid;
                        jobtracker.ActionRequest = "Update";
                        jobtracker.Update(jobtracker);
                        InitializeGrid();
                    }
                    else//delete break if start time and end time are the same
                    {
                        jobtracker.Delete(jobtracker.Id);
                        InitializeGrid();
                    }
                }
                if (gridJobTrack.Rows.Count > 1) // continue the last created job
                {
                    for (int i = gridJobTrack.Rows.Count - 1; i >= 0; i--)
                    {
                        jobtrackid = Convert.ToInt32(((Label)gridJobTrack.Rows[i].FindControl("labelJobTrackId")).Text);
                        JobTracker jtracker = jobtracker.GetJobTracker(jobtrackid, false);
                        JobType jtype = jobtype.GetJobType(Convert.ToInt32(jtracker.JobTypeId));
                        if (jtype.ComputeTime == true)
                        {
                            jtracker.StartTime = jobtracker.EndTime;
                            jtracker.UserId = userid;
                            jtracker.CreateDate = DateTime.Now;
                            jtracker.CreatedBy = userid;
                            jtracker.LastUpdateDate = DateTime.Now;
                            jtracker.LastUpdatedBy = userid;
                            jtracker.EndTime = null;
                            jtracker.ActionRequest = "Add";
                            jtracker.Status = "Approved";
                            if(Convert.ToDateTime(jobtracker.EndTime).TimeOfDay != new TimeSpan(0,0,0)) //only insert if endtime is not equal to 24:00 (next day)
                                jtracker.Insert(jtracker);
                            InitializeGrid();
                            break;
                        }
                    }
                }
            }
        }