コード例 #1
0
        protected void gvCompensationApprovals_RowUpdating(object sender, GridViewUpdateEventArgs e)
        {
            try
            {
                GridViewRow row = gvCompensationApprovals.Rows[e.RowIndex];

                Label lblTMmember = row.FindControl("lblEditUserID") as Label;

                objCompensationModel.UserID = Convert.ToInt32(lblTMmember.Text.ToString());

                Label lblEditCompensationID = row.FindControl("lblEditCompensationID") as Label;
                objCompensationModel.CompensationID = Convert.ToInt32(lblEditCompensationID.Text);

                Label lblCompensationWFID = row.FindControl("lblCompensationWFID") as Label;
                if (lblCompensationWFID.Text != "")
                {
                    objCompensationModel.WorkFlowID = new Guid(lblCompensationWFID.Text);
                }

                Label lblgrvEditUserName = row.FindControl("lblgrvEditUserName") as Label;

                TextBox txtEditAppliedFor = row.FindControl("txtgrvAppliedFor") as TextBox;

                DropDownList ddlStatusID = row.FindControl("ddlgrvStatusName") as DropDownList;
                objCompensationModel.StatusID = Convert.ToInt32(ddlStatusID.SelectedValue);
                if (ddlStatusID.Visible == false)
                {
                    WfApprovedLocked = true;
                }

                Label lblEditgrvReason = row.FindControl("lblEditgrvReason") as Label;

                objCompensationModel.Resason = lblEditgrvReason.Text.Trim();

                TextBox ApproverComments = row.FindControl("txtgrvApproverComments") as TextBox;
                objCompensationModel.ApproverComments = Convert.ToString(ApproverComments.Text.ToString());

                objCompensationModel.RequestedOn = Convert.ToDateTime(DateTime.Now.ToShortDateString());

                objCompensationModel.CompensationTo = Convert.ToDateTime(txtEditAppliedFor.Text.Trim());

                objLeaveDeatilsModel.UserID = Convert.ToInt32(lblTMmember.Text.ToString());
                //Getting All the Holidays Details
                //dsHolidaysList = objHolidayBOL.bindData();
                objHolidayModel.UserID    = objCompensationModel.UserID;
                objHolidayModel.StartDate = Convert.ToDateTime(txtEditAppliedFor.Text.Trim());
                objHolidayModel.EndDate   = Convert.ToDateTime(txtEditAppliedFor.Text.Trim());
                dsHolidaysList            = objHolidayBOL.bindHolidaysForLeaveApprovals(objHolidayModel);

                //For Getting ConfigDate from Database
                dsConfigItem = objCompensationBOL.GetCompensationDetails(objCompensationModel);
                ConfigDate   = Convert.ToDateTime(dsConfigItem.Tables[1].Rows[0]["ConfigItemValue"].ToString());

                FromDate = Convert.ToDateTime(txtEditAppliedFor.Text.Trim());
                Boolean isCompLeaveApproved = false;
                rowsAffected = objCompensationBOL.CheckSignInForCompensation(objCompensationModel);

                objRosterPlanningModel.UserId = Convert.ToInt32(lblTMmember.Text.ToString());
                dsEmployeeRole = ObjRosterPlanningBOL.GetEmployeeRole(objRosterPlanningModel);
                foreach (DataRow rowRole in dsEmployeeRole.Tables[0].Rows)
                {
                    if (rowRole["RoleName"].ToString().Equals("Shift"))
                    {
                        isShiftEmployee = true;
                        break;
                    }
                }
                if (rowsAffected > 0)
                {
                    if (!isShiftEmployee)
                    {
                        // This is checking the total list of holiday in current year provided by V2.
                        for (int k = 0; k < dsHolidaysList.Tables[0].Rows.Count; k++)
                        {
                            if (FromDate.ToString() == dsHolidaysList.Tables[0].Rows[k]["HolidayDate"].ToString())
                            {
                                isCompLeaveApproved = true;
                                break;
                            }
                        }

                        // This is to check whether the working day is a WeekDay.
                        if (FromDate.DayOfWeek.ToString() == "Saturday" || FromDate.DayOfWeek.ToString() == "Sunday")
                        {
                            isCompLeaveApproved = true;
                        }
                    }
                    else
                    {
                        objRosterPlanningModel.FromDate = Convert.ToDateTime(FromDate);
                        objRosterPlanningModel.ToDate   = Convert.ToDateTime(FromDate);

                        dsEmployeeShiftDetail = ObjRosterPlanningBOL.GetEmployeeShiftDetail(objRosterPlanningModel);
                        for (int k = 0; k < dsEmployeeShiftDetail.Tables[1].Rows.Count; k++)
                        {
                            if (FromDate.ToString() == dsEmployeeShiftDetail.Tables[1].Rows[k]["HolidayDate"].ToString())
                            {
                                isCompLeaveApproved = true;
                                break;
                            }
                        }
                        for (int i = 0; i < dsEmployeeShiftDetail.Tables[0].Rows.Count; i++)
                        {
                            if (Convert.ToDateTime(FromDate.ToString()) == Convert.ToDateTime(dsEmployeeShiftDetail.Tables[0].Rows[i]["WeekOff1"].ToString()) || (Convert.ToDateTime(FromDate.ToString()) == Convert.ToDateTime(dsEmployeeShiftDetail.Tables[0].Rows[i]["WeekOff2"].ToString())))
                            {
                                isCompLeaveApproved = true;
                                break;
                            }
                        }
                    }
                    if (isCompLeaveApproved)
                    {
                        // Compensatory Leave Approved Successfully.
                        objCompensationModel.AppliedFor = Convert.ToDateTime(FromDate.ToString());
                        UpdateCompenstionDetails();
                        gvCompensationApprovals.EditIndex = -1;
                        lblError.Visible   = true;
                        lblSuccess.Visible = true;
                        lblSuccess.Text    = "Compensatory Leave details are updated successfully";
                        lblError.Text      = "";

                        if (ddlStatusID.SelectedValue == Convert.ToString("2"))
                        {
                            //Here delete the all records of related CompensationID
                            objLeaveTransDetailsModel.UserID         = Convert.ToInt32(lblTMmember.Text.ToString());
                            objLeaveTransDetailsModel.CompensationID = Convert.ToInt32(lblEditCompensationID.Text);

                            //Here Adding Leave records to LeaveTransaction table
                            objLeaveTransDetailsModel.UserID         = Convert.ToInt32(lblTMmember.Text.ToString());
                            objLeaveTransDetailsModel.CompensationID = Convert.ToInt32(lblEditCompensationID.Text);

                            objLeaveTransDetailsModel.TransactionDate = Convert.ToDateTime(DateTime.Now.ToShortDateString());
                            objLeaveTransDetailsModel.Description     = "Compensatory Leave:" + lblEditgrvReason.Text.ToString();
                            objLeaveTransDetailsModel.Quantity        = Convert.ToDecimal(1);
                            objLeaveTransDetailsModel.LeaveType       = Convert.ToBoolean(0);

                            AddCompensationTransactionDetails();
                            UpdateEmployeeLeaveAndComp();
                        }
                        if (ddlStatusID.SelectedValue == Convert.ToString("3"))
                        {
                            //Here delete the all records of related CompensationID
                            objLeaveTransDetailsModel.UserID         = Convert.ToInt32(lblTMmember.Text.ToString());
                            objLeaveTransDetailsModel.CompensationID = Convert.ToInt32(lblEditCompensationID.Text);
                            DeleteCompensationTransactionDetails();
                            UpdateEmployeeLeaveAndComp();

                            //Here Adding Leave records to Compensation table
                            objCompensationModel.AppliedFor = Convert.ToDateTime(txtEditAppliedFor.Text.Trim());
                            objCompensationModel.StatusID   = Convert.ToInt32(3);
                            UpdateCompenstionDetails();
                            lblSuccess.Visible = true;
                            lblSuccess.Text    = "Compensatory Leave Details are Rejected";
                        }
                    }
                }
                else
                {
                    // Compensatory Leave Approved Unsuccessfully.
                    lblError.Visible = true;
                    lblError.Text    = "The entry for the day you are approving Compensatory Leave for is in Pending Status.Kindly approve that";
                    lblSuccess.Text  = "";
                    return;
                }

                if (WfApprovedLocked == false)
                {
                    if (objCompensationModel.StatusID == 2)
                    {
                        try
                        {
                            WorkflowRuntime wr = (WorkflowRuntime)Application["WokflowRuntime"];
                            if (objCompensationModel.WorkFlowID != null || objCompensationModel.WorkFlowID.ToString() != "")
                            {
                                WorkflowInstance wi = wr.GetWorkflow(objCompensationModel.WorkFlowID);
                                wi.Resume();
                                CompensationService objCompensationService = (CompensationService)wr.GetService(typeof(CompensationService));
                                objCompensationService.RaiseApproveEvent(wi.InstanceId);
                            }
                        }
                        catch (V2Exceptions)
                        {
                            try
                            {
                                Response.Redirect("CompensationApproval.aspx");
                            }
                            catch (System.Threading.ThreadAbortException ex)
                            {
                                throw;
                            }
                        }
                        catch (System.Exception)
                        {
                            try
                            {
                                Response.Redirect("CompensationApproval.aspx");
                            }
                            catch (System.Threading.ThreadAbortException ex)
                            {
                                throw;
                            }
                        }
                    }
                    if (objCompensationModel.StatusID == 3)
                    {
                        try
                        {
                            WorkflowRuntime wr = (WorkflowRuntime)Application["WokflowRuntime"];
                            if (objCompensationModel.WorkFlowID != null || objCompensationModel.WorkFlowID.ToString() != "")
                            {
                                WorkflowInstance wi = wr.GetWorkflow(objCompensationModel.WorkFlowID);
                                wi.Resume();
                                CompensationService objCompensationService = (CompensationService)wr.GetService(typeof(CompensationService));
                                objCompensationService.RaiseRejectEvent(wi.InstanceId);
                            }
                        }
                        catch (V2Exceptions)
                        {
                            try
                            {
                                Response.Redirect("CompensationApproval.aspx");
                            }
                            catch (System.Threading.ThreadAbortException ex)
                            {
                                throw;
                            }
                        }
                        catch (System.Exception)
                        {
                            try
                            {
                                Response.Redirect("CompensationApproval.aspx");
                            }
                            catch (System.Threading.ThreadAbortException ex)
                            {
                                throw;
                            }
                        }
                    }
                    if (objCompensationModel.StatusID == 4)
                    {
                        try
                        {
                            WorkflowRuntime wr = (WorkflowRuntime)Application["WokflowRuntime"];
                            if (objCompensationModel.WorkFlowID != null || objCompensationModel.WorkFlowID.ToString() != "")
                            {
                                WorkflowInstance wi = wr.GetWorkflow(objCompensationModel.WorkFlowID);
                                wi.Resume();
                                CompensationService objCompensationService = (CompensationService)wr.GetService(typeof(CompensationService));
                                objCompensationService.RaiseCancelEvent(wi.InstanceId);
                            }
                        }
                        catch (V2Exceptions)
                        {
                            try
                            {
                                Response.Redirect("CompensationApproval.aspx");
                            }
                            catch (System.Threading.ThreadAbortException ex)
                            {
                                throw;
                            }
                        }
                        catch (System.Exception)
                        {
                            try
                            {
                                Response.Redirect("CompensationApproval.aspx");
                            }
                            catch (System.Threading.ThreadAbortException ex)
                            {
                                throw;
                            }
                        }
                    }
                }
                else
                {
                    if (objCompensationModel.StatusID == 2)
                    {
                        //Sending a Mail to Employee after Updating compensatory Leaves
                        if (WfApprovedLocked == true)
                        {
                            objLeaveDeatilsModel.UserID = Convert.ToInt32(lblTMmember.Text.ToString());
                            SendingMailToReportingPerson();
                        }
                    }
                }

                Response.Redirect("CompensationApproval.aspx");
            }
            catch (System.Threading.ThreadAbortException ex)
            {
                throw;
            }
            catch (V2Exceptions ex)
            {
                throw;
            }
            catch (System.Exception ex)
            {
                if (ex.Message.CompareTo("Already Compensation applied for this date.") != 0)
                {
                    lblError.Visible = false;
                    FileLog objFileLog = FileLog.GetLogger();
                    objFileLog.WriteLine(LogType.Error, ex.Message, "CompensationApproval.aspx.cs", "btnSubmit", ex.StackTrace);
                    throw new V2Exceptions(ex.ToString(), ex);
                }
                else
                {
                    lblError.Visible = true;

                    lblError.Text   = "User has already applied for compensatory leave for this date";
                    lblSuccess.Text = "";
                }
            }
        }