protected void cvDuplicateMealsAllowanceFooter_ServerValidate(object source, ServerValidateEventArgs args)
        {
            int employeeId = Int32.Parse(((DropDownList)grdProjectTime.FooterRow.FindControl("ddlEmployeesFooter")).SelectedValue);
            bool isMealsAllowance = false;// ((CheckBox)grdProjectTime.FooterRow.FindControl("ckbxMealsAllowanceFooter")).Checked;

            TeamProjectTime2DetailTemp teamProjectTime2DetailTemp = new TeamProjectTime2DetailTemp(teamProjectTime2TDS);
            bool validMealsAllowance1 = teamProjectTime2DetailTemp.ValidateMealsAllowance(employeeId, isMealsAllowance);

            args.IsValid = true;
            if (!validMealsAllowance1)
            {
                args.IsValid = false;
            }
        }
        protected void cvAlreadyRegisteredMealsAllowanceFooter_ServerValidate(object source, ServerValidateEventArgs args)
        {
            int companyId = Int32.Parse(hdfCompanyId.Value);
            int employeeId = Int32.Parse(((DropDownList)grdProjectTime.FooterRow.FindControl("ddlEmployeesFooter")).SelectedValue);
            DateTime date_ = tkrdpDate_.SelectedDate.Value;
            bool isMealsAllowance = false;// ((CheckBox)grdProjectTime.FooterRow.FindControl("ckbxMealsAllowanceFooter")).Checked;
            string mealsCountry = hdfMealsCountry.Value;
            int projectTimeId = -1;
            args.IsValid = true;

            TeamProjectTime2DetailTemp teamProjectTime2DetailTemp = new TeamProjectTime2DetailTemp(teamProjectTime2TDS);
            bool validMealsAllowance1 = teamProjectTime2DetailTemp.ValidateMealsAllowance(employeeId, isMealsAllowance);
            if (validMealsAllowance1)
            {
                if ((mealsCountry != "-1") && (isMealsAllowance))
                {
                    ProjectTimeGateway projectTimeGateway = new ProjectTimeGateway();
                    if (projectTimeId == -1)
                    {
                        if (projectTimeGateway.ExistsMealsAllowanceByEmployeIdDate(employeeId, date_, companyId))
                        {
                            args.IsValid = false;
                        }
                    }
                    else
                    {
                        if (projectTimeGateway.ExistsMealsAllowanceByProjectTimeIdEmployeIdDate(projectTimeId, employeeId, date_, companyId))
                        {
                            args.IsValid = false;
                        }
                    }
                }
            }
        }
        protected void cvDuplicateMealsAllowanceEdit_ServerValidate(object source, ServerValidateEventArgs args)
        {
            args.IsValid = true;

            if (grdProjectTime.Rows.Count > 0)
            {
                foreach (GridViewRow row in grdProjectTime.Rows)
                {
                    if ((row.RowType == DataControlRowType.DataRow) && ((row.RowState == DataControlRowState.Edit) || (row.RowState == (DataControlRowState.Edit | DataControlRowState.Alternate))))
                    {
                        int employeeId = Int32.Parse(((DropDownList)row.FindControl("ddlEmployeesEdit")).SelectedValue);
                        bool isMealsAllowance = false;// ((CheckBox)row.FindControl("ckbxMealsAllowanceEdit")).Checked;
                        int projectTimeId2 = Int32.Parse(((Label)row.FindControl("lblDetailIdEdit")).Text);

                        TeamProjectTime2DetailTemp teamProjectTime2DetailTemp = new TeamProjectTime2DetailTemp(teamProjectTime2TDS);
                        bool validMealsAllowance1 = teamProjectTime2DetailTemp.ValidateMealsAllowanceEdit(employeeId, isMealsAllowance, projectTimeId2);

                        args.IsValid = true;
                        if (!validMealsAllowance1)
                        {
                            args.IsValid = false;
                        }
                    }
                }
            }
        }
        private void PostStepDataChanges()
        {
            int teamProjectTimeId = (int)ViewState["teamProjectTimeId"];
            string templateName = "";
            int companiesId = int.Parse(ddlClient.SelectedValue);
            int projectId = int.Parse(ddlProject.SelectedValue);
            DateTime date_ = tkrdpDate_.SelectedDate.Value;
            string workingDetails = ""; if (tbxWorkingDetails.Text != "(Select)") workingDetails = tbxWorkingDetails.Text;
            string work_ = ddlTypeOfWork.SelectedValue;
            string function_ = ddlFunction.SelectedValue;

            ProjectGateway projectGateway = new ProjectGateway(new DataSet());
            projectGateway.LoadByProjectId(projectId);

            CountryGateway countryGateway = new CountryGateway(new DataSet());
            countryGateway.LoadByCountryId(projectGateway.GetCountryID(projectId));

            string location = countryGateway.GetName(projectGateway.GetCountryID(projectId));

            DateTime? startTime = null;
            if ((ddlStartTimeHour.SelectedValue.Trim() != "") && (ddlStartTimeMinute.SelectedValue.Trim() != "") )
            {
                startTime = new DateTime(date_.Year, date_.Month, date_.Day, Int32.Parse(ddlStartTimeHour.SelectedValue), Int32.Parse(ddlStartTimeMinute.SelectedValue), 0);
            }

            DateTime? endTime = null;
            if ((ddlEndTimeHour.SelectedValue.Trim() != "") && (ddlEndTimeMinute.SelectedValue.Trim() != "") )
            {
                endTime = new DateTime(date_.Year, date_.Month, date_.Day, Int32.Parse(ddlEndTimeHour.SelectedValue), Int32.Parse(ddlEndTimeMinute.SelectedValue), 0);
            }

            double? offset = 0; if (ddlLunch.SelectedValue != "0") offset = double.Parse(ddlLunch.SelectedValue);
            Int64? mealsCountry = null; if (ddlMealsCountry.SelectedValue != "-1") mealsCountry = Int64.Parse(ddlMealsCountry.SelectedValue);
            string mealsAllowanceType = ""; //if (cbxMealsAllowance.Checked) mealsAllowanceType = "Full Day";
            decimal mealsAllowance = MealsAllowance.GetMealsAllowance(mealsCountry, false, "Full Day");
            string comments = "";
            string type = "Template";
            string state = "Done";
            int loginId = Convert.ToInt32(Session["loginID"]);
            bool deleted = false;
            int? unitId = null;
            int? towedUnitId = null;
            bool fairWage = false; if (hdfFairWage.Value == "True") fairWage = true;

            // New template check
            TeamProjectTime2 teamProjectTime2 = new TeamProjectTime2(teamProjectTime2TDS);
            if (((int)ViewState["teamProjectTimeId"] == 0) && ((string)ViewState["StepFrom"] != "Employees"))
            {
                // ... Insert team project time
                teamProjectTime2.Insert(teamProjectTimeId, templateName, companiesId, projectId, date_, startTime, endTime, offset, workingDetails, location, mealsCountry, mealsAllowanceType, mealsAllowance, unitId, towedUnitId, comments, type, state, loginId, deleted, work_, function_, fairWage);
            }
            else
            {
                // ... Update team project time
                teamProjectTime2.Update(teamProjectTimeId, templateName, companiesId, projectId, date_, startTime, endTime, offset, workingDetails, location, mealsCountry, mealsAllowanceType, mealsAllowance, unitId, towedUnitId, comments, type, state, loginId, deleted, work_, function_, fairWage);
            }

            // Store date in date edit for employees step
            tbxDate.Text = tkrdpDate_.SelectedDate.Value.ToString();
            hdfDate.Value = tkrdpDate_.SelectedDate.Value.ToString();

            // Store data in hidden components for employees step
            hdfTeamProjectTimeID.Value = teamProjectTimeId.ToString();
            hdfCompaniesID.Value = companiesId.ToString();
            hdfProjectID.Value = projectId.ToString();

            string startTimeForNextStep = "";
            if ((ddlStartTimeHour.SelectedValue.Trim() != "") && (ddlStartTimeMinute.SelectedValue.Trim() != ""))
            {
                startTimeForNextStep = ddlStartTimeHour.SelectedValue.Trim() + ":" + ddlStartTimeMinute.SelectedValue.Trim();
            }
            hdfStartTime.Value = startTimeForNextStep;

            string endTimeForNextStep = "";
            if ((ddlEndTimeHour.SelectedValue.Trim() != "") && (ddlEndTimeMinute.SelectedValue.Trim() != ""))
            {
                endTimeForNextStep = ddlEndTimeHour.SelectedValue.Trim() + ":" + ddlEndTimeMinute.SelectedValue.Trim();
            }

            hdfEndTime.Value = endTimeForNextStep;
            if (offset != null) hdfOffset.Value = offset.ToString(); else hdfOffset.Value = "";
            hdfWorkingDetails.Value = workingDetails.ToString();
            hdfLocation.Value = location.ToString();
            hdfMealsCountry.Value = ddlMealsCountry.SelectedValue;
            hdfIsMealsAllowance.Value = "false";// cbxMealsAllowance.Checked.ToString();
            hdfMealsAllowance.Value = mealsAllowance.ToString();
            hdfProjectTimeState.Value = "For Approval"; if ((string)ViewState["LHMode"] == "Partial") hdfProjectTimeState.Value = "Approved";
            //if (cbxClearUnitAssigment.Checked)
            hdfClearUnitAssigment.Value = "false";

            // ... For work and function string
            hdfWork_.Value = work_;
            hdfFunction_.Value = function_;
            hdfWorkFunctionConcat.Value = work_ + " . " + function_;

            // Clear Unit Assigment validation
            //if (cbxClearUnitAssigment.Checked)
            //{
            //    // ... Update detail
            //    TeamProjectTime2DetailTemp teamProjectTime2DetailTemp = new TeamProjectTime2DetailTemp(teamProjectTime2TDS);
            //    teamProjectTime2DetailTemp.UpdateAll(teamProjectTimeId);
            //}
            //else
            //{
                // ... Update detail
                TeamProjectTime2DetailTemp teamProjectTime2DetailTemp = new TeamProjectTime2DetailTemp(teamProjectTime2TDS);
                teamProjectTime2DetailTemp.UpdateAll(teamProjectTimeId, false);
            //}

            // Store datasets
            Session["teamProjectTime2TDS"] = teamProjectTime2TDS;
            teamProjectTimeDetailTemp = teamProjectTime2TDS.LFS_TEAM_PROJECT_TIME_DETAIL_TEMP;
            Session["teamProjectTimeDetailTemp"] = teamProjectTime2TDS.LFS_TEAM_PROJECT_TIME_DETAIL_TEMP;
        }
        // ////////////////////////////////////////////////////////////////////////
        // STEP3 - DATA - METHODS
        //
        private void StepDataIn()
        {
            // Set instruction
            mWizard2 master = (mWizard2)this.Master;
            master.WizardInstruction = "Please define global data, it will be applied to your team members on the next step.";

            // Wizard type & step from check
            if ((hdfNewOrTemplate.Value == "New") && ((string)ViewState["StepFrom"] != "Employees"))
            {
                // Prepare initial data
                ddlClient.Enabled = true;
                ddlProject.Enabled = true;

                ProjectTimeWorkList projectTimeWorkList = new ProjectTimeWorkList(new DataSet());
                projectTimeWorkList.LoadAndAddItem("(Select a Type)");
                ddlTypeOfWork.DataSource = projectTimeWorkList.Table;
                ddlTypeOfWork.DataValueField = "Work_";
                ddlTypeOfWork.DataTextField = "Work_";
                ddlTypeOfWork.DataBind();
                ddlTypeOfWork.SelectedIndex = 0;

                ProjectTimeWorkFunctionList projectTimeWorkFunctionList = new ProjectTimeWorkFunctionList(new DataSet());
                projectTimeWorkFunctionList.LoadActiveForAddAndAddItem("(Select a Function)", "-1");
                ddlFunction.DataSource = projectTimeWorkFunctionList.Table;
                ddlFunction.DataValueField = "Function_";
                ddlFunction.DataTextField = "Function_";
                ddlFunction.DataBind();
                ddlFunction.SelectedIndex = 0;
            }
            else
            {
                TeamProjectTime2Gateway teamProjectTime2Gateway = new TeamProjectTime2Gateway(teamProjectTime2TDS);
                TeamProjectTime2DetailTemp teamProjectTime2DetailTemp = new TeamProjectTime2DetailTemp(teamProjectTime2TDS);

                // Prepare initial data
                if ((string)ViewState["StepFrom"] == "Template")
                {
                    ViewState["teamProjectTimeId"] = Int32.Parse(hdfSelectedIdTemplate.Value);

                    // ... for TeamProjectTime
                    teamProjectTime2Gateway.LoadByTeamProjectTimeId((int)ViewState["teamProjectTimeId"]);

                    // ... for TeamProjectTimeDetailTemp
                    teamProjectTime2DetailTemp.LoadAllByTeamProjectTimeId((int)ViewState["teamProjectTimeId"]);
                }

                // ... for Client
                string companiesId = teamProjectTime2Gateway.GetCompaniesId((int)ViewState["teamProjectTimeId"]).ToString();

                int companyId = Int32.Parse(hdfCompanyId.Value);
                CompaniesGateway companiesGateway = new CompaniesGateway();
                companiesGateway.LoadAllByCompaniesId(Int32.Parse(companiesId), companyId);

                // ... If Company is active
                bool deleted = companiesGateway.GetDeleted(Int32.Parse(companiesId));

                if (deleted)
                {
                    ddlClient.SelectedIndex = -1;
                }
                else
                {
                    ddlClient.SelectedValue = companiesId;
                }

                if (ddlClient.SelectedValue.Length == 0)
                {
                    odsClient.DataBind();
                    ddlClient.DataSourceID = "odsClient";
                    ddlClient.DataValueField = "COMPANIES_ID";
                    ddlClient.DataTextField = "Name";
                    ddlClient.DataBind();

                    if (deleted)
                    {
                        ddlClient.SelectedIndex = -1;
                    }
                    else
                    {
                        ddlClient.SelectedValue = companiesId;
                    }
                }

                if (!deleted)
                {
                    // ... for project
                    odsProjectsInternalProjectsBallparkProjects.SelectParameters.RemoveAt(2);
                    odsProjectsInternalProjectsBallparkProjects.SelectParameters.Add("ClientId", ddlClient.SelectedValue);
                    odsProjectsInternalProjectsBallparkProjects.Select();
                    odsProjectsInternalProjectsBallparkProjects.DataBind();

                    ddlProject.DataSourceID = "odsProjectsInternalProjectsBallparkProjects";
                    ddlProject.DataValueField = "ProjectID";
                    ddlProject.DataTextField = "NAME";
                    ddlProject.DataBind();

                    try
                    {
                        ddlProject.SelectedValue = teamProjectTime2Gateway.GetProjectId((int)ViewState["teamProjectTimeId"]).ToString();
                    }
                    catch
                    {
                        ddlProject.SelectedIndex = -1;
                    }
                }
                else
                {
                    ddlProject.SelectedIndex = -1;
                }

                // ... for Date
                if ((string)ViewState["StepFrom"] == "Employees")
                {
                    tkrdpDate_.SelectedDate = teamProjectTime2Gateway.GetDate_((int)ViewState["teamProjectTimeId"]);
                }

                // ... for Type of work
                ProjectTimeWorkList projectTimeWorkList = new ProjectTimeWorkList(new DataSet());
                projectTimeWorkList.LoadAndAddItem("(Select a Type)");
                ddlTypeOfWork.DataSource = projectTimeWorkList.Table;
                ddlTypeOfWork.DataValueField = "Work_";
                ddlTypeOfWork.DataTextField = "Work_";
                ddlTypeOfWork.DataBind();

                if (teamProjectTime2Gateway.GetWork((int)ViewState["teamProjectTimeId"]).ToString() == "")
                {
                    ddlTypeOfWork.SelectedValue = "(Select a Type)";
                }
                else
                {
                    ddlTypeOfWork.SelectedValue = (string)teamProjectTime2Gateway.GetWork((int)ViewState["teamProjectTimeId"]);
                }

                // ... for function
                ProjectTimeWorkFunctionList projectTimeWorkFunctionList = new ProjectTimeWorkFunctionList(new DataSet());
                if (teamProjectTime2Gateway.GetWork((int)ViewState["teamProjectTimeId"]).ToString() == "")
                {
                    // ... If there is no type of Work, no function should be loaded
                    projectTimeWorkFunctionList.LoadActiveForAddAndAddItem("(Select a Function)", "-1");
                }
                else
                {
                    projectTimeWorkFunctionList.LoadActiveForAddAndAddItem("(Select a Function)", teamProjectTime2Gateway.GetWork((int)ViewState["teamProjectTimeId"]));
                }

                ddlFunction.DataSource = projectTimeWorkFunctionList.Table;
                ddlFunction.DataValueField = "Function_";
                ddlFunction.DataTextField = "Function_";
                ddlFunction.DataBind();

                if (teamProjectTime2Gateway.GetWork((int)ViewState["teamProjectTimeId"]).ToString() == "")
                {
                    ddlFunction.SelectedValue = "(Select a Function)";
                }
                else
                {
                    ddlFunction.SelectedValue = (string)teamProjectTime2Gateway.GetFunction((int)ViewState["teamProjectTimeId"]);
                }

                // ... for working details
                if (!deleted)
                {
                    tbxWorkingDetails.Text = teamProjectTime2Gateway.GetWorkingDetails((int)ViewState["teamProjectTimeId"]);
                }
                else
                {
                    tbxWorkingDetails.Text = "";
                }

                // ... for start time
                if (teamProjectTime2Gateway.GetStartTime((int)ViewState["teamProjectTimeId"]).HasValue)
                {
                    string startTime = ((DateTime)teamProjectTime2Gateway.GetStartTime((int)ViewState["teamProjectTimeId"])).ToString("H:mm");
                    string[] hoursMin1 = startTime.Split(':');
                    ddlStartTimeHour.SelectedValue = hoursMin1[0].Trim();
                    ddlStartTimeMinute.SelectedValue = hoursMin1[1].Trim();
                }

                // ... for end time
                if (teamProjectTime2Gateway.GetEndTime((int)ViewState["teamProjectTimeId"]).HasValue)
                {
                    string endTime = ((DateTime)teamProjectTime2Gateway.GetEndTime((int)ViewState["teamProjectTimeId"])).ToString("H:mm");
                    string[] endHoursMin1 = endTime.Split(':');
                    ddlEndTimeHour.SelectedValue = endHoursMin1[0].Trim();
                    ddlEndTimeMinute.SelectedValue = endHoursMin1[1].Trim();
                }

                // ... for offset
                if (teamProjectTime2Gateway.GetOffset((int)ViewState["teamProjectTimeId"]).HasValue) ddlLunch.SelectedValue = Math.Round(teamProjectTime2Gateway.GetOffset((int)ViewState["teamProjectTimeId"]).Value, 2).ToString();

                // ... for meals country
                if (!deleted)
                {
                    if (teamProjectTime2Gateway.GetMealsCountry((int)ViewState["teamProjectTimeId"]).HasValue)
                    {
                        ddlMealsCountry.SelectedValue = teamProjectTime2Gateway.GetMealsCountry((int)ViewState["teamProjectTimeId"]).Value.ToString();
                    }
                    else
                    {
                        ddlMealsCountry.SelectedIndex = 0;
                    }
                }
                else
                {
                    ddlMealsCountry.SelectedIndex = -1;
                }

                // ... for meals allowance
                //if (teamProjectTime2Gateway.GetMealsAllowance((int)ViewState["teamProjectTimeId"]) > 0) cbxMealsAllowance.Checked = true;

                // ... for fair wage
                if (teamProjectTime2Gateway.GetFairWage((int)ViewState["teamProjectTimeId"])) hdfFairWage.Value = "True";

                // Store datasets
                Session["teamProjectTime2TDS"] = teamProjectTime2TDS;
                template = teamProjectTime2TDS.Template;
                Session["template"] = teamProjectTime2TDS.Template;
            }

            //cbxClearUnitAssigment.Checked = false;
        }
        protected void cvAlreadyRegisteredMealsAllowanceEdit_ServerValidate(object source, ServerValidateEventArgs args)
        {
            args.IsValid = true;

            if (grdProjectTime.Rows.Count > 0)
            {
                foreach (GridViewRow row in grdProjectTime.Rows)
                {
                    if ((row.RowType == DataControlRowType.DataRow) && ((row.RowState == DataControlRowState.Edit) || (row.RowState == (DataControlRowState.Edit | DataControlRowState.Alternate))))
                    {
                        int companyId = Int32.Parse(hdfCompanyId.Value);
                        int employeeId = Int32.Parse(((DropDownList)row.FindControl("ddlEmployeesEdit")).SelectedValue);
                        DateTime date_ = tkrdpDate_.SelectedDate.Value;
                        bool isMealsAllowance = false;// ((CheckBox)row.FindControl("ckbxMealsAllowanceEdit")).Checked;
                        int projectTimeId2 = Int32.Parse(((Label)row.FindControl("lblDetailIdEdit")).Text);

                        string mealsCountry = hdfMealsCountry.Value;
                        int projectTimeId = -1;
                        args.IsValid = true;

                        TeamProjectTime2DetailTemp teamProjectTime2DetailTemp = new TeamProjectTime2DetailTemp(teamProjectTime2TDS);
                        bool validMealsAllowance1 = teamProjectTime2DetailTemp.ValidateMealsAllowanceEdit(employeeId, isMealsAllowance, projectTimeId2);
                        if (validMealsAllowance1)
                        {
                            if ((mealsCountry != "-1") && (isMealsAllowance))
                            {
                                ProjectTimeGateway projectTimeGateway = new ProjectTimeGateway();
                                if (projectTimeId == -1)
                                {
                                    if (projectTimeGateway.ExistsMealsAllowanceByEmployeIdDate(employeeId, date_, companyId))
                                    {
                                        args.IsValid = false;
                                    }
                                }
                                else
                                {
                                    if (projectTimeGateway.ExistsMealsAllowanceByProjectTimeIdEmployeIdDate(projectTimeId, employeeId, date_, companyId))
                                    {
                                        args.IsValid = false;
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
        private void GrdTeamProjectTimeDetailAdd()
        {
            Page.Validate();
            if (Page.IsValid)
            {
                Page.Validate("footerValidData");
                if (Page.IsValid)
                {
                    Page.Validate("footerData");
                    if (Page.IsValid)
                    {
                        int teamProjectTimeId = Int32.Parse(hdfTeamProjectTimeID.Value);
                        int employeeId = Int32.Parse(((DropDownList)grdProjectTime.FooterRow.FindControl("ddlEmployeesFooter")).SelectedValue);
                        int companiesId = int.Parse(ddlClient.SelectedValue);
                        int projectId = int.Parse(ddlProject.SelectedValue);
                        DateTime date_ = tkrdpDate_.SelectedDate.Value;
                        Int64? mealsCountry = null; if (ddlMealsCountry.SelectedValue != "-1") mealsCountry = Int64.Parse(ddlMealsCountry.SelectedValue);

                        string startTimeFooter = "";
                        string startHoursFooter = ""; if (((DropDownList)grdProjectTime.FooterRow.FindControl("ddlStartTimeHourFooter")).SelectedValue != "") startHoursFooter = ((DropDownList)grdProjectTime.FooterRow.FindControl("ddlStartTimeHourFooter")).SelectedValue.Trim();
                        string startMinutesFooter = ""; if (((DropDownList)grdProjectTime.FooterRow.FindControl("ddlStartTimeMinuteFooter")).SelectedValue != "") startMinutesFooter = ((DropDownList)grdProjectTime.FooterRow.FindControl("ddlStartTimeMinuteFooter")).SelectedValue.Trim();

                        if ((startHoursFooter != "") && (startMinutesFooter != ""))
                        {
                            startTimeFooter = startHoursFooter + ":" + startMinutesFooter;
                        }

                        string endTimeFooter = "";
                        string endHoursFooter = ""; if (((DropDownList)grdProjectTime.FooterRow.FindControl("ddlEndTimeHourFooter")).SelectedValue != "") endHoursFooter = ((DropDownList)grdProjectTime.FooterRow.FindControl("ddlEndTimeHourFooter")).SelectedValue.Trim();
                        string endMinutesFooter = ""; if (((DropDownList)grdProjectTime.FooterRow.FindControl("ddlEndTimeMinuteFooter")).SelectedValue != "") endMinutesFooter = ((DropDownList)grdProjectTime.FooterRow.FindControl("ddlEndTimeMinuteFooter")).SelectedValue.Trim();

                        if ((endHoursFooter != "") && (endMinutesFooter != ""))
                        {
                            endTimeFooter = endHoursFooter + ":" + endMinutesFooter;
                        }

                        decimal? offsetFooter = 0; if (((DropDownList)grdProjectTime.FooterRow.FindControl("ddlLunchFooter")).SelectedValue != "0") offsetFooter = Decimal.Round(decimal.Parse(((DropDownList)grdProjectTime.FooterRow.FindControl("ddlLunchFooter")).SelectedValue), 2);
                        double? offsetFooterFinal = null; if (offsetFooter.HasValue) offsetFooterFinal = double.Parse(((decimal)offsetFooter).ToString());
                        string typeOfWorkFooter = ((DropDownList)grdProjectTime.FooterRow.FindControl("ddlTypeOfWorkFooter")).SelectedValue;
                        int? unitIdFooter = null; if (((DropDownList)grdProjectTime.FooterRow.FindControl("ddlUnitFooter")).SelectedValue != "-1") unitIdFooter = Int32.Parse(((DropDownList)grdProjectTime.FooterRow.FindControl("ddlUnitFooter")).SelectedValue);
                        int? towedIdFooter = null; if (((DropDownList)grdProjectTime.FooterRow.FindControl("ddlTowedFooter")).SelectedValue != "-1") towedIdFooter = Int32.Parse(((DropDownList)grdProjectTime.FooterRow.FindControl("ddlTowedFooter")).SelectedValue);
                        string workingDetailsFooter = tbxWorkingDetails.Text;
                        bool isMealsAllowanceFooter = false;// ((CheckBox)grdProjectTime.FooterRow.FindControl("ckbxMealsAllowanceFooter")).Checked;
                        string commentsFooter = ((TextBox)grdProjectTime.FooterRow.FindControl("tbxCommentsFooter")).Text;
                        int companyId = Int32.Parse(hdfCompanyId.Value);
                        bool fairWageFooter = false; if (hdfFairWage.Value == "True") fairWageFooter = true;

                        string jobClassTypeFooter = ((DropDownList)grdProjectTime.FooterRow.FindControl("ddlJobClassTypeFooter")).SelectedValue;

                        string projectTimeState = "For Approval"; if ((string)ViewState["LHMode"] == "Partial") projectTimeState = "Approved";

                        string work_ = "";
                        string function_ = "";
                        if (typeOfWorkFooter != "(Select)")
                        {
                            string[] workFunction = typeOfWorkFooter.ToString().Trim().Split('.');
                            work_ = workFunction[0].Trim();
                            function_ = workFunction[1].Trim();
                        }

                        ProjectGateway projectGateway = new ProjectGateway(new DataSet());
                        projectGateway.LoadByProjectId(projectId);
                        CountryGateway countryGateway = new CountryGateway(new DataSet());
                        countryGateway.LoadByCountryId(projectGateway.GetCountryID(projectId));
                        string location = countryGateway.GetName(projectGateway.GetCountryID(projectId));

                        // Insert Data
                        TeamProjectTime2DetailTemp teamProjectTime2DetailTemp = new TeamProjectTime2DetailTemp(teamProjectTime2TDS);
                        teamProjectTime2DetailTemp.Insert(teamProjectTimeId, employeeId, companiesId, projectId, date_, startTimeFooter, endTimeFooter, offsetFooterFinal, workingDetailsFooter, location, mealsCountry, isMealsAllowanceFooter, unitIdFooter, towedIdFooter, projectTimeState, commentsFooter, work_, function_, typeOfWorkFooter, fairWageFooter, jobClassTypeFooter);

                        // Store Dataset
                        Session.Remove("teamProjectTimeDetailTempDummy");
                        Session["teamProjectTime2TDS"] = teamProjectTime2TDS;
                        teamProjectTimeDetailTemp = teamProjectTime2TDS.LFS_TEAM_PROJECT_TIME_DETAIL_TEMP;
                        Session["teamProjectTimeDetailTemp"] = teamProjectTime2TDS.LFS_TEAM_PROJECT_TIME_DETAIL_TEMP; ;

                        grdProjectTime.DataBind();
                        grdProjectTime.PageIndex = grdProjectTime.PageCount - 1;
                    }
                }
            }
        }
        protected void grdProjectTime_RowUpdating(object sender, GridViewUpdateEventArgs e)
        {
            Page.Validate("editValidData");
            if (Page.IsValid)
            {
                Page.Validate("editData");
                if (Page.IsValid)
                {
                    int teamProjectTimeId = (int)e.Keys["TeamProjectTimeID"];
                    int detailId = (int)e.Keys["DetailID"];
                    DateTime date_ = DateTime.Parse(hdfDate.Value);

                    int employeeId = Int32.Parse(((DropDownList)grdProjectTime.Rows[e.RowIndex].Cells[3].FindControl("ddlEmployeesEdit")).SelectedValue);
                    int companiesId = int.Parse(ddlClient.SelectedValue);
                    int projectId = int.Parse(ddlProject.SelectedValue);
                    Int64? mealsCountry = null; if (ddlMealsCountry.SelectedValue != "-1") mealsCountry = Int64.Parse(ddlMealsCountry.SelectedValue);
                    string startTime = "";
                    string startHoursEdit = ((DropDownList)grdProjectTime.Rows[e.RowIndex].Cells[3].FindControl("ddlStartTimeHourEdit")).SelectedValue.Trim();
                    string startMinutesEdit = ((DropDownList)grdProjectTime.Rows[e.RowIndex].Cells[3].FindControl("ddlStartTimeMinuteEdit")).SelectedValue.Trim();

                    if ((startHoursEdit != "") && (startMinutesEdit != ""))
                    {
                        startTime = startHoursEdit + ":" + startMinutesEdit;
                    }

                    string endTime = "";
                    string endHoursEdit = ((DropDownList)grdProjectTime.Rows[e.RowIndex].Cells[3].FindControl("ddlEndTimeHourEdit")).SelectedValue.Trim();
                    string endMinutesEdit = ((DropDownList)grdProjectTime.Rows[e.RowIndex].Cells[3].FindControl("ddlEndTimeMinuteEdit")).SelectedValue.Trim();

                    if ((endHoursEdit != "") && (endMinutesEdit != ""))
                    {
                        endTime = endHoursEdit + ":" + endMinutesEdit;
                    }

                    decimal? offset = 0; if (((DropDownList)grdProjectTime.Rows[e.RowIndex].Cells[3].FindControl("ddlLunchEdit")).SelectedValue != "0") offset = decimal.Round(Decimal.Parse(((DropDownList)grdProjectTime.Rows[e.RowIndex].Cells[3].FindControl("ddlLunchEdit")).SelectedValue), 2);
                    double? offsetFinal = null; if (offset.HasValue) offsetFinal = double.Parse(((decimal)offset).ToString());
                    string workingDetails = tbxWorkingDetails.Text;
                    bool isMealsAllowance = false;// ((CheckBox)grdProjectTime.Rows[e.RowIndex].Cells[3].FindControl("ckbxMealsAllowanceEdit")).Checked;
                    int? unitId = null; if (((DropDownList)grdProjectTime.Rows[e.RowIndex].Cells[3].FindControl("ddlUnitEdit")).SelectedValue != "-1") unitId = Int32.Parse(((DropDownList)grdProjectTime.Rows[e.RowIndex].Cells[3].FindControl("ddlUnitEdit")).SelectedValue);
                    int? towedUnitId = null; if (((DropDownList)grdProjectTime.Rows[e.RowIndex].Cells[3].FindControl("ddlTowedEdit")).SelectedValue != "-1") towedUnitId = Int32.Parse(((DropDownList)grdProjectTime.Rows[e.RowIndex].Cells[3].FindControl("ddlTowedEdit")).SelectedValue);
                    string comments = ((TextBox)grdProjectTime.Rows[e.RowIndex].Cells[3].FindControl("tbxCommentsEdit")).Text;
                    string workFunctionConcat = ((DropDownList)grdProjectTime.Rows[e.RowIndex].Cells[3].FindControl("ddlTypeOfWorkFunctionEdit")).SelectedValue;

                    string work_ = "";
                    string function_ = "";
                    if (workFunctionConcat != "(Select)")
                    {
                        string[] workFunction = workFunctionConcat.ToString().Trim().Split('.');
                        work_ = workFunction[0].Trim();
                        function_ = workFunction[1].Trim();
                    }

                    bool fairWage = false; if (hdfFairWage.Value == "True") fairWage = true;
                    string jobClassType = ((DropDownList)grdProjectTime.Rows[e.RowIndex].Cells[3].FindControl("ddlJobClassTypeEdit")).SelectedValue;

                    ProjectGateway projectGateway = new ProjectGateway(new DataSet());
                    projectGateway.LoadByProjectId(projectId);
                    CountryGateway countryGateway = new CountryGateway(new DataSet());
                    countryGateway.LoadByCountryId(projectGateway.GetCountryID(projectId));
                    string location = countryGateway.GetName(projectGateway.GetCountryID(projectId));

                    // Update data
                    TeamProjectTime2DetailTemp teamProjectTime2DetailTemp = new TeamProjectTime2DetailTemp(teamProjectTime2TDS);
                    teamProjectTime2DetailTemp.Update(teamProjectTimeId, detailId, employeeId, date_, startTime, endTime, offsetFinal, workingDetails, location, mealsCountry, isMealsAllowance, unitId, towedUnitId, comments, work_, function_, workFunctionConcat, fairWage, jobClassType);

                    // Store dataset
                    Session.Remove("teamProjectTimeDetailTempDummy");
                    Session["teamProjectTime2TDS"] = teamProjectTime2TDS;
                    Session["teamProjectTimeDetailTemp"] = teamProjectTime2TDS.LFS_TEAM_PROJECT_TIME_DETAIL_TEMP;
                    teamProjectTimeDetailTemp = teamProjectTime2TDS.LFS_TEAM_PROJECT_TIME_DETAIL_TEMP;
                }
                else
                {
                    e.Cancel = true;
                }
            }
            else
            {
                e.Cancel = true;
            }
        }
        // /////////////////////////////////////////////////////////////////////////////////////////////////////
        //
        // STEP4 - EMPLOYEES
        //
        // ////////////////////////////////////////////////////////////////////////
        // STEP4 - EMPLOYEES - EVENTS
        //
        protected void grdProjectTime_RowDeleting(object sender, GridViewDeleteEventArgs e)
        {
            // Project Time Gridview, if the gridview is edition mode
            if (grdProjectTime.EditIndex >= 0)
            {
                grdProjectTime.UpdateRow(grdProjectTime.EditIndex, true);
            }

            // Delete project time
            int teamProjectTimeId = (int)e.Keys["TeamProjectTimeID"];
            int detailId = (int)e.Keys["DetailID"];

            // Delete team project time details
            TeamProjectTime2DetailTemp teamProjectTime2Detail = new TeamProjectTime2DetailTemp(teamProjectTime2TDS);
            teamProjectTime2Detail.Delete(teamProjectTimeId, detailId);

            // Store dataset
            Session["teamProjectTime2TDS"] = teamProjectTime2TDS;
            Session.Remove("teamProjectTimeDetailTempDummy");
            teamProjectTimeDetailTemp = teamProjectTime2TDS.LFS_TEAM_PROJECT_TIME_DETAIL_TEMP;
            Session["teamProjectTimeDetailTemp"] = teamProjectTime2TDS.LFS_TEAM_PROJECT_TIME_DETAIL_TEMP;
        }
        protected void cvValidTimesFooter_ServerValidate(object source, ServerValidateEventArgs args)
        {
            if (hdfBtnNext.Value == "True")
            {
                args.IsValid = true;
            }
            else
            {
                args.IsValid = false;

                ProjectTimeGateway projectTimeGatewayForVerify = new ProjectTimeGateway();
                int employeeId = 0; if (((DropDownList)grdProjectTime.FooterRow.FindControl("ddlEmployeesFooter")).SelectedValue.Trim() != "") employeeId = Int32.Parse(((DropDownList)grdProjectTime.FooterRow.FindControl("ddlEmployeesFooter")).SelectedValue.Trim());
                int companyId = Int32.Parse(hdfCompanyId.Value);
                DateTime date_ = DateTime.Parse(tbxDate.Text);
                string startTimeFooter = "";
                string startHoursFooter = ""; if (((DropDownList)grdProjectTime.FooterRow.FindControl("ddlStartTimeHourFooter")).SelectedValue != "") startHoursFooter = ((DropDownList)grdProjectTime.FooterRow.FindControl("ddlStartTimeHourFooter")).SelectedValue.Trim();
                string startMinutesFooter = ""; if (((DropDownList)grdProjectTime.FooterRow.FindControl("ddlStartTimeMinuteFooter")).SelectedValue != "") startMinutesFooter = ((DropDownList)grdProjectTime.FooterRow.FindControl("ddlStartTimeMinuteFooter")).SelectedValue.Trim();

                string endTimeFooter = "";
                string endHoursFooter = ""; if (((DropDownList)grdProjectTime.FooterRow.FindControl("ddlEndTimeHourFooter")).SelectedValue != "") endHoursFooter = ((DropDownList)grdProjectTime.FooterRow.FindControl("ddlEndTimeHourFooter")).SelectedValue.Trim();
                string endMinutesFooter = ""; if (((DropDownList)grdProjectTime.FooterRow.FindControl("ddlEndTimeMinuteFooter")).SelectedValue != "") endMinutesFooter = ((DropDownList)grdProjectTime.FooterRow.FindControl("ddlEndTimeMinuteFooter")).SelectedValue.Trim();

                if ((startHoursFooter != "") && (startMinutesFooter != "") && (endHoursFooter != "") && (endMinutesFooter != ""))
                {
                    startTimeFooter = startHoursFooter + ":" + startMinutesFooter;
                    endTimeFooter = endHoursFooter + ":" + endMinutesFooter;

                    // Verify if the time not exists at DB
                    if (projectTimeGatewayForVerify.NotExistsByEmployeIdDate_StartTimeEndTime(employeeId, date_, startTimeFooter, endTimeFooter, companyId))
                    {
                        args.IsValid = true;
                    }

                    if (args.IsValid)
                    {
                        // Verify if it exist at last entered rows
                        TeamProjectTime2DetailTemp teamProjectTime2DetailTemp = new TeamProjectTime2DetailTemp(teamProjectTime2TDS);
                        if (teamProjectTime2DetailTemp.NotExistsByEmployeIdDate_StartTime(employeeId, date_, startTimeFooter, endTimeFooter))
                        {
                            args.IsValid = true;
                        }
                        else
                        {
                            args.IsValid = false;
                        }
                    }
                }
            }
        }