protected void modalBtnAdd_Click(object sender, EventArgs e)
 {
     List<SupervisorMapping> supervisors = new List<SupervisorMapping>();
     if (Session["SupMap"] != null)
     {
         supervisors = (List<SupervisorMapping>)Session["SupMap"];
     }
     SupervisorMapping supmap = new SupervisorMapping();
     supmap.SupervisorId = Convert.ToInt32(modalDropDownSupervisor.SelectedItem.Value);
     supmap.supervisorname = modalDropDownSupervisor.SelectedItem.Text;
     supmap.supdepartment = modalDropDownDepartment.SelectedItem.Text;
     supmap.UserId = Convert.ToInt32(modalDropDownUsers.SelectedItem.Value);
     supervisors.Add(supmap);
     gridViewModal.DataSource = supervisors;
     gridViewModal.DataBind();
     InitializeModalDropDownSupervisor();
     Session["SupMap"] = supervisors;
     programmaticModalPopup.Show();
 }
 protected void modalBtnSubmit_Command(object sender, CommandEventArgs e)
 {
     int userid = Convert.ToInt32(modalDropDownUsers.SelectedItem.Value);
     for (int i = 0; i < gridViewModal.Rows.Count; i++)
     {
         SupervisorMapping supmap = new SupervisorMapping();
         CheckBox cb = (CheckBox)gridViewModal.Rows[i].FindControl("modalChkSupervisor");
         Label labelSupId = (Label)gridViewModal.Rows[i].FindControl("modalLabelSupId");
         int supid = Convert.ToInt32(labelSupId.Text);
         supmap = supmap.GetSupervisorMapping(userid, supid);
         if (cb.Checked)
         {
             if (supmap == null)
             {
                 supmap = new SupervisorMapping();
                 supmap.UserId = userid;
                 supmap.SupervisorId = supid;
                 supmap.Insert(supmap);
             }
         }
         else
         {
             if (supmap != null)
             {
                 supmap.Delete(supmap.Id);
             }
         }
     }
     Session["SupMap"] = null;
     this.programmaticModalPopup.Hide();
     InitializeMainGrid();
 }
        protected bool isSupervisor()
        {
            SupervisorMapping supmap = new SupervisorMapping();

            if(supmap.GetActiveSubordinates(Convert.ToInt32(Session["UserId"])).Count > 0)
                return true;
            else
                return false;
        }
        protected void InitializeModalGridView()
        {
            int userid = Convert.ToInt32(modalDropDownUsers.SelectedItem.Value);
            SupervisorMapping supmap = new SupervisorMapping();
            List<SupervisorMapping> supervisors = supmap.GetActiveSupervisors(userid);
            gridViewModal.DataSource = supervisors;
            gridViewModal.DataBind();

            for (int i = 0; i < gridViewModal.Rows.Count; i++)
            {
                CheckBox cb = (CheckBox)gridViewModal.Rows[i].FindControl("modalChkSupervisor");
                Label labelSupId = (Label)gridViewModal.Rows[i].FindControl("modalLabelSupId");
                //cb.Checked = true;
                labelSupId.ToolTip = supervisors[i].Id.ToString();
            }
            Session["SupMap"] = supervisors;
        }
        //Get all available users that is not yet selected as a supervisor by a specific user
        public List<User> GetAvailableSupervisors(int userid,int departmentId)
        {
            TimeTrackerEntities db = new TimeTrackerEntities();

            SupervisorMapping supmap = new SupervisorMapping();
            var data = (from u in db.T_Users
                        where u.DepartmentId == departmentId
                        && u.Status == "Active"
                        select new User()
                        {
                            Id = u.Id,
                            Username = u.Username,
                            Password = u.Password,
                            Firstname = u.Firstname,
                            Lastname = u.Lastname,
                            Phone = u.Phone,
                            Mobile = u.Mobile,
                            Fax = u.Fax,
                            Email = u.Email,
                            DepartmentId = u.DepartmentId,
                            RoleId = u.RoleId,
                            CreateDate = u.CreateDate,
                            CreatedBy = u.CreatedBy,
                            LastUpdateDate = u.LastUpdateDate,
                            LastUpdatedBy = u.LastUpdatedBy,
                            Status = u.Status,
                            fullname = u.Firstname + " " + u.Lastname,
                            role = u.M_Role.Description,
                            department = u.M_Department.Description,
                            EmployeeNumber = u.EmployeeNumber,
                            currentSalary = 0,
                            currentOffDay = 0,
                            currentSpecialOffDay = 0,
                            currentOptOffDay1 = 0,
                            currentOptOffDay2 = 0,
                            currentOptOffDay3 = 0,
                            currentOptOffDay4 = 0,
                            noOTpay = false,
                            startTime = "",
                            endTime = "",
                            shifting = false,
                            currentRateStartDate = DateTime.Today,
                            currentRateCreateDate = DateTime.Today
                        }).ToList();
            db.Dispose();

            var suplist = supmap.GetActiveSupervisors(userid, departmentId);

            foreach (SupervisorMapping s in suplist)
            {
                for (int i = 0; i < data.Count; i++)
                {
                    if (data[i].Id == s.SupervisorId)
                    {
                        data.RemoveAt(i);
                        break;
                    }
                }
            }

            return data;
        }
 public void Update(SupervisorMapping rs)
 {
     using (TimeTrackerEntities db = new TimeTrackerEntities())
     {
         try
         {
             T_SupervisorMapping t_rs = db.T_SupervisorMapping.FirstOrDefault(p => p.Id == rs.Id);
             t_rs.UserId = rs.UserId;
             t_rs.SupervisorId = rs.SupervisorId;
             db.SaveChanges();
         }
         catch (Exception ex)
         {
             string msg = ex.Message;
         }
     }
 }
        public void Insert(SupervisorMapping rm)
        {
            T_SupervisorMapping t_rm = new T_SupervisorMapping();
            t_rm.UserId = rm.UserId;
            t_rm.SupervisorId = rm.SupervisorId;

            using (TimeTrackerEntities db = new TimeTrackerEntities())
            {
                try
                {
                    db.T_SupervisorMapping.Add(t_rm);
                    db.SaveChanges();
                }
                catch (Exception ex)
                {
                    string msg = ex.Message;
                }
            }
        }
        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();
                }
            }
        }
        //Action triggered when the users click the add job track button
        protected void linkBtnAddJobTrack_Click(object sender, EventArgs e)
        {
            Session["StartTime"] = null;
            JobTracker jobtracker = new JobTracker();
            DateTime selectedDate = DateTime.Parse(txtBoxDate.Text);
            int userid = Convert.ToInt32(Session["UserId"]);
            bool noError = true;

            if (jobtracker.HasUnclosedJobs(userid)) //check if user has unclosed jobs
            {
                noError = false;
                panelAlertHeader2.CssClass = "modalAlertHeader";
                alertModalBtnOK2.CssClass = "buttonalert";
                labelAlertHeader2.Text = "Error";
                labelAlertMessage2.Text = "Please close all jobs before adding a new one.";
                programmaticAlertModalPopup2.Show();
            }
            if (selectedDate.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 add job on previous date without a direct supervisor. Please contact your system administrator.";
                    programmaticAlertModalPopup2.Show();
                }
            }
            else
            {
                string errMsg = "";
                errMsg = jobtracker.GetError(userid, selectedDate, 30); //check if there is an error
                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)
            {
                InitializeModalJobType();
                //InitializeModalStartTime();
                //InitializeModalEndTime();
                InitializeModalJobStatus();

                bool generateBlank = false;
                if (selectedDate.CompareTo(DateTime.Today) == 0)
                    generateBlank = true;
                GenerateStartHour();
                GenerateStartMin(Convert.ToInt32(modalDropDownStartTimeHour.SelectedItem.Value));
                GenerateEndHour(Convert.ToInt32(modalDropDownStartTimeHour.SelectedItem.Value), Convert.ToInt32(modalDropDownStartTimeMin.SelectedItem.Value), generateBlank);
                GenerateEndMin(Convert.ToInt32(modalDropDownStartTimeHour.SelectedItem.Value), Convert.ToInt32(modalDropDownStartTimeMin.SelectedItem.Value), modalDropDownEndTimeHour.SelectedItem.Text.Trim());

                modalBtnSubmit.CommandArgument = "Add";

                modalBtnDelete.Visible = false;
                modalTxtBoxRemarks.Text = "";
                modalLabelError.Text = "";
                modalLabelError.Visible = false;
                modallabelBoxJobDescription.Text = "";
                modallabelCustomer.Text = "";
                modalTxtBoxJobId.Text = "";
                modalLabelHWSW.Text = "";
                modalLabelHWSW.ToolTip = "";
                modalLabelEvalNo.Text = "";
                //modalTxtBoxJobId.Enabled = false;
                Page.Validate();

                this.programmaticModalPopup.Show();
            }
        }