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 = ""; } } }