⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 submitlvreq.aspx.cs

📁 该管理系统的主要功能是管理员工资料、管理员工考勤、计算员工薪资和业绩评定等。大部分涉及对敏感数据修改的工作都仅由人事部完成
💻 CS
📖 第 1 页 / 共 2 页
字号:
			//该过程调用 ReCalculateHoliday() 函数,计算日历控件当月所包含的国定假日。
			this.cldEndDate.SelectedDate = e.NewDate;
			this.lblEndDay.Text = this.cldEndDate.SelectedDate.ToShortDateString();
			ReCalculateHoliday();
		}



		/// <summary>
		/// 计算某指定日期是否为国定假日
		/// </summary>
		/// <param name="dt">指定的日期</param>
		/// <returns>返回是否是国定假日的布尔值,是国定假日返回true,否则返回false</returns>
		private bool IsHoliday( DateTime dt )
		{
			//查询 指定日期所在月份的所有国定假日
			ArrayList alHoliday = new ArrayList();		
			int iHolidays = DBUtils.SubmitLvReq.GetHoliday(dt,ref alHoliday);
			
			bool isHoliday = false;

			if(dt.DayOfWeek == DayOfWeek.Saturday ||dt.DayOfWeek ==DayOfWeek.Sunday )
			{
				//指定日期为周末
				isHoliday = true;
			}
			else
			{
			
				if(iHolidays == (int)DBResult.Success && alHoliday.Count != 0)
				{
					//数据库操作正确且该月存在国定假日

					//判断指定日期是否是国定假日
					foreach(DateTime dtHoliday in alHoliday)
					{
						if(dt.ToShortDateString() == dtHoliday.ToShortDateString())
						{
							//是国定假日或者周末
							isHoliday = true;
							break;
						}
					}
				}
			}
			return isHoliday;
		
		}


		/// <summary>
		/// 根据用户选定的请假日期,返回请假的总小时数,如果请假日期不正确,则返回 0
		/// </summary>
		/// <returns>返回请假的总小时数</returns>
		private int CalculateHours()
		{
			//调用 ReCalculateHoliday() 函数,
			//计算日历控件当月所包含的国定假日,还调用IsHoliday(dtStart) 函数,判断指定日期是否是国定假日。

			//查询开始时间 月的国定假日
			ArrayList alHolidayL = new ArrayList();			
			int isStartHolidays = DBUtils.SubmitLvReq.GetHoliday(cldStartDate.SelectedDate,ref alHolidayL);
			
			//查询结束时间 月的国定假日
			ArrayList alHolidayR = new ArrayList();			
			int isEndHolidays = DBUtils.SubmitLvReq.GetHoliday(cldEndDate.SelectedDate,ref alHolidayR);

			//创建一个变量用来存储请假小时数
			int iHours = 0;

			//开始日期的开始时间
			int iStartTime = Convert.ToInt32(this.cmbStartTime.SelectedValue);
			//结束日期的结束时间
			int iEndTime = Convert.ToInt32(this.cmbEndTime.SelectedValue);

			//选择了错误的请假时间
			if((this.cldStartDate.SelectedDate>this.cldEndDate.SelectedDate)
				||((this.cldStartDate.SelectedDate == this.cldEndDate.SelectedDate)
				&&(iStartTime > iEndTime || this.IsHoliday(this.cldStartDate.SelectedDate))
				)
				)
			{
				//开始日期大于结束日期;
				//或者开始日期与结束日期相等,但开始时间大于结束时间或者该日是国定假日或者是周末
				iHours = 0;
			}
			else
			{
				//正确的选择请假时间
				if((this.cldStartDate.SelectedDate == this.cldEndDate.SelectedDate))
				{
					//开始日期与结束日期是同一天,且不是国定假日、且结束时间大于开始时间、且不是周末
					iHours = iEndTime - iStartTime;
				}
				else
				{
					//开始日期和结束日期不是同一天,且结束日期晚于开始日期
					
					//计算开始日期当天的小时数
					if(!this.IsHoliday(this.cldStartDate.SelectedDate))
					{
						iHours += 8-iStartTime;
					}

					//计算结束日期当天的小时数
					if(!this.IsHoliday(this.cldEndDate.SelectedDate))
					{
						iHours += iEndTime;
					}
					DateTime dt = this.cldStartDate.SelectedDate .AddDays(1);
					while(dt<this.cldEndDate.SelectedDate)
					{
						if(!this.IsHoliday(dt))
						{
							iHours += 8;
						}
						dt = dt.AddDays(1);
					}
				}
			}

			//返回请假小时数
			return iHours;
		}


		
		//点击计算请假时间
		private void btnCalculate_Click(object sender, System.EventArgs e)
		{
			int iHours = this.CalculateHours();
			if(iHours == 0)
			{
				//请假日期不正确
				Response.Write("<script>alert('请假日期不正确,请重试!')</script>");
			}
			this.lblTotalHours.Text = iHours.ToString();
		}

		
		
		//将请假请求保存到数据库中
		private void btnSubmit_Click(object sender, System.EventArgs e)
		{
			//计算请假小时数
			int iHours = this.CalculateHours();

			//获取请假者编号
			int iEmpID = Convert.ToInt32(Session["EmployeeID"]);

			//获取提交时间
			DateTime dtSubmit = System.DateTime.Now;

			//获取开始请假时间
			string strStartTime = this.cldStartDate.SelectedDate.ToShortDateString().ToString() + " "+ this.cmbStartTime.SelectedItem.Text;
			DateTime dtStart = Convert.ToDateTime(strStartTime);

			//获取结束时间
			string strEndTime = this.cldEndDate.SelectedDate.ToShortDateString().ToString() +" " + this.cmbEndTime.SelectedItem.Text;
			DateTime dtEnd = Convert.ToDateTime(strEndTime);

			//获取审批者编号
			int iApproverID = 0;
			//从数据库中获取常规请假天数
			int iDays = 0;
			int isSuccess=DBUtils.SubmitLvReq.GetNormalLeaveDays(ref iDays);
			int NormalHours = 0;
			if(isSuccess == (int)DBResult.Success)
			{
				//成功从数据库中获取常规请假天数
				NormalHours = iDays * 8;
			}
			if(iHours < NormalHours)
			{
				//常规请假,可由部门经理审批
				iApproverID = Convert.ToInt32(this.cmbApproverList.SelectedValue);
			}
			else
			{
				//获取总经理的编号
				try
				{
					DBUtils.Employee.GetCEOInfo(ref iApproverID);
				}
				catch(Exception ex)
				{
					this.lblErrorMsg.Text = "请假小时超过常规请假小时数,应交总经理审批";
					this.lblErrorMsg.Visible = true;
					iApproverID = Convert.ToInt32(this.cmbApproverList.Items[1]);
				}
			}

			//获取请假事由
			string strReason = this.txtReason.Text.Trim();

			

			//可用的年假小时数
			int MaxHours = Convert.ToInt32(this.lblALhours.Text.Trim());

			if( dtStart<System.DateTime.Now )
			{
				Response.Write("<script>alert('请假日期不正确')</script>");
				this.lblErrorMsg.Text = "请假日期不正确";
				this.lblErrorMsg.Visible = true;
			}
			else
			{
				if(iHours > MaxHours)
				{
					//所请的小时数超过可用的年假小时数
					this.lblErrorMsg.Text = "请假的小时数超过可用的年假小时数";
					this.lblErrorMsg.Visible = true;
				}
				else
				{
					if(iHours ==0)
					{
						//请假日期不正确
						this.lblErrorMsg.Text = "请假日期不正确";
						this.lblErrorMsg.Visible = true;
					}
					else
					{
						if(strReason == "")
						{
							//请假事由为空
							this.lblErrorMsg.Text = "请假事由不能为空";
							this.lblErrorMsg.Visible = true;
						}
						else
						{
							try
							{
								//判断所选择的时间段内是否已经申请了请假,如果已经申请了则不能再申请
								//创建一个DataSet对象存储历史记录
								DataSet dsHistoryResult = new DataSet();
								//查询所选择的时间段内的历史记录
								int iHasRecord = DBUtils.SubmitLvReq.QueryHistoryReq(iEmpID,dtStart.ToString(),dtEnd.ToString(),ref dsHistoryResult);
								if(iHasRecord == (int)DBResult.Success && dsHistoryResult.Tables[0].Rows.Count != 0)
								{
									//这段时间内已经有请假记录,不能再请假了
									Response.Write("<script>alert('您已经请假了,请等待审批')</script>");
								}
								else
								{
									//所选择的时间内还没有请假记录,允许申请请假
									//将请假请求保存到数据库中
									DBUtils.SubmitLvReq.AddLeaveReq(iEmpID,dtSubmit,dtStart,dtEnd,iApproverID,iHours,strReason);

									//更新可用请假小时数
									int lastHours = Convert.ToInt32(this.lblALhours.Text) - iHours;
									this.lblALhours.Text = lastHours.ToString();
									Response.Write("<script>alert('提交请假成功,请等待审批')</script>");
								}
							}
							catch(Exception ex)
							{
								//将请假请求保存到数据库中出现异常
								this.lblErrorMsg.Text = "提交请假记录失败";
								this.lblErrorMsg.Visible = true;
							}

						}
					}
				}
			}

		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -