public ActionResult holiday() { VC_LMSEntities4 d = new VC_LMSEntities4(); var holiday = d.holidays.ToList(); return(View(holiday)); }
public ActionResult ApplyLeave(LeaveManagementSystemValueCreed.Models.Leave leave) { // leave.Start_Date = TimeZoneInfo.ConvertTimeToUtc(leave.Start_Date); // leave.End_Date = TimeZoneInfo.ConvertTimeToUtc(leave.End_Date); var months = leave.Start_Date.Subtract(DateTime.Now); if (months.Days > 180) { ViewBag.Message = "Cannot Apply For more than 6 month in Advance"; return(View()); } VC_LMSEntities r = new VC_LMSEntities(); var user_info = r.UsersTables.Where(w => w.EMPLOYEE_ID == leave.Employee_Id).FirstOrDefault(); var indian_zone = TimeZoneInfo.FindSystemTimeZoneById("India Standard Time"); if (DateTime.Now.Date.Kind == DateTimeKind.Utc) { if (leave.Start_Date.Subtract(TimeZoneInfo.ConvertTimeFromUtc(DateTime.Now.Date, indian_zone)).Days > 360) { ViewBag.Message = "Cannot Apply for such date,as it is too Far"; return(View()); } } else { if (leave.Start_Date.Subtract(DateTime.Now.Date).Days > 360) { ViewBag.Message = "Cannot Apply for such date,as it is too Far"; return(View()); } } bool status = false; string message = ""; if (DateTime.Now.Date.Kind != DateTimeKind.Utc) { var datediff = DateTime.Now.Date.Subtract(leave.End_Date.Date); if (datediff.TotalDays > 0) { ViewBag.Message = "Cannot Apply Leave if End Date is in the Past"; ViewBag.Status = false; return(View()); } } else if (DateTime.Now.Date.Kind == DateTimeKind.Utc) { var datediff = TimeZoneInfo.ConvertTimeFromUtc(DateTime.Now.Date, indian_zone).Subtract(leave.End_Date); if (datediff.TotalDays > 0) { ViewBag.Message = "Cannot Apply Leave if End Date is in the Past"; ViewBag.Status = false; return(View()); } } if (leave.End_Date > leave.Start_Date) { int c = 0; VC_LMSEntities dd = new VC_LMSEntities(); foreach (var item in dd.Leaves) { if ((Session["userID"].ToString()) == item.Employee_Id) { if ((item.Start_Date < leave.Start_Date) && (leave.End_Date < item.End_Date) && (item.Status != "Cancelled")) { ViewBag.Message = "Leave range falling under Another Leave Range "; ViewBag.Status = false; ModelState.Clear(); return(View()); } else if ((item.Start_Date < leave.Start_Date) && (leave.End_Date < item.End_Date) && (item.Status != "Cancelled")) { ViewBag.Message = "Leave date conflict,Please Apply after previous leave Ends "; ViewBag.Status = false; ModelState.Clear(); return(View()); } else if ((item.Start_Date < leave.Start_Date) && (leave.Start_Date < item.End_Date) && (item.Status != "Cancelled")) { ViewBag.Message = "Leave date conflict,Please Apply after previous leave Ends,or Edit "; ViewBag.Status = false; ModelState.Clear(); return(View()); } if ((leave.Start_Date == item.Start_Date || leave.End_Date == item.End_Date) && item.Status != "Cancelled") { ViewBag.Message = "Matching Date For Already Applied Leave Found,Please Cancel that Leave "; ViewBag.Status = false; ModelState.Clear(); return(View()); } } if (item.Employee_Id == (Session["userID"].ToString()) && (item.Status == "Pending on Manager" || item.Status == "Approved By Manager" || item.Status == "Pending on Approvers" || item.Status == "Approved By Approvers")) { c += item.Number_of_Days; } } var x = (Session["userID"].ToString()); var account = dd.UsersTables.Where(a => a.EMPLOYEE_ID == x).FirstOrDefault(); if (account.leaves_alloted == 0) { message = "Sorry Your Leave Balance is Zero and you cannot apply"; //return RedirectToAction("ApplyLeave"); status = false; } else { int e = 0; var number_of_day = leave.End_Date.Date.Subtract(leave.Start_Date.Date); int number_of_days = 0; number_of_days = number_of_day.Days + 1; int d = 0; VC_LMSEntities4 p = new VC_LMSEntities4(); for (DateTime i = leave.Start_Date; i <= leave.End_Date; i = i.AddDays(1)) { if (i.DayOfWeek == DayOfWeek.Saturday || i.DayOfWeek == DayOfWeek.Sunday) { e = e + 1; } foreach (var item in p.holidays) { if (item.Holiday_date == i) { e++; } } } number_of_days = number_of_days - e; if ((c + number_of_days > account.leaves_alloted)) { message = "Already Applied or Approved leaves Exceeds Your Leave Balance"; status = false; ViewBag.Message = message; ViewBag.Status = status; } else if (number_of_days <= account.leaves_alloted) { try { leave.Start_Date = leave.Start_Date.Date; leave.End_Date = leave.End_Date.Date; if (DateTime.Now.Date.Kind == DateTimeKind.Utc) { leave.Leave_apply_date = TimeZoneInfo.ConvertTimeFromUtc(DateTime.Now.Date, indian_zone); } else if (DateTime.Now.Date.Kind != DateTimeKind.Utc) { leave.Leave_apply_date = DateTime.Now.Date; } VC_LMSEntities vc = new VC_LMSEntities(); int k = 0; foreach (var item in vc.approvers) { if (item.Emplyoee_id == (Session["userID"].ToString())) { k++; } } if (k > 0) { leave.Status = "Pending on Approvers"; } else if (k == 0) { leave.Status = "Pending on HR"; } leave.Number_of_Days = number_of_days; leave.Employe_name = Session["userName"].ToString(); leave.Employee_Id = (Session["userID"].ToString()); using (VC_LMSEntities f = new VC_LMSEntities()) { var row = f.UsersTables.Where(m => m.ROLES == "HR").FirstOrDefault(); string EmailID = row.EMAIL; string employeename = leave.Employe_name; int days_Leave = leave.Number_of_Days; string hrname = row.FIRST_NAME; SendverificationLinkEmail(EmailID, employeename, days_Leave, hrname, leave.LeaveType); var emp_id = Session["userID"].ToString(); var apporvers = f.approvers.Where(y => y.Emplyoee_id == emp_id).FirstOrDefault(); if (apporvers != null) { foreach (var item in f.approvers) { if (item.Emplyoee_id == emp_id) { var approvr = f.UsersTables.Where(q => q.EMPLOYEE_ID == item.approver_id).FirstOrDefault(); var approvername = approvr.FIRST_NAME; SendverificationLinkEmail(approvr.EMAIL, employeename, days_Leave, approvername, leave.LeaveType); } } } //var userinfo = f.UsersTables.Where(s => s.EMPLOYEE_ID == leave.Employee_Id).FirstOrDefault(); //var row2 = f.UsersTables.Where(m => m.EMPLOYEE_ID == userinfo.manager_id).FirstOrDefault(); //EmailID = row2.EMAIL; //SendverificationLinkEmail(EmailID, employeename); f.Leaves.Add(leave); f.SaveChanges(); ModelState.Clear(); message = "Successfully Applied"; ViewBag.Status = status; } } catch (Exception ex) { ViewBag.Message = "Exclude Special Characters from Reason"; return(View()); } } else if (number_of_days < account.leaves_alloted) { if (1 <= DateTime.Now.Month && DateTime.Now.Month <= 3) { if (4 <= leave.Start_Date.Month && leave.Start_Date.Month <= 6) { if (number_of_days < account.leaves_alloted + 5) { } } else if (7 <= leave.Start_Date.Month && leave.Start_Date.Month <= 9) { if (number_of_days < account.leaves_alloted + 10) { } } } else if (4 <= DateTime.Now.Month && DateTime.Now.Month <= 6) { if (7 <= leave.Start_Date.Month && leave.Start_Date.Month <= 9) { if (number_of_days < account.leaves_alloted + 5) { } } else if (10 <= leave.Start_Date.Month && leave.Start_Date.Month <= 12) { if (number_of_days < account.leaves_alloted + 10) { } } } else if (7 <= DateTime.Now.Month && DateTime.Now.Month <= 9) { if (10 <= leave.Start_Date.Month && leave.Start_Date.Month <= 12) { if (number_of_days < account.leaves_alloted + 5) { } } else if (1 <= leave.Start_Date.Month && leave.Start_Date.Month <= 3) { if (account.leaves_alloted > 10) { } } } } else { message = "Leave Applied for is greater than your Leave Balance"; ViewBag.Status = false; } } } else if (leave.End_Date < leave.Start_Date) { message = "End Date should be greater then Start Date"; status = false; } else if ((leave.End_Date == leave.Start_Date) && (leave.Start_Date == null)) { message = "Cannot pass Null in Required Field"; status = false; } else if (leave.End_Date == leave.Start_Date) { try { if (leave.Start_Date.DayOfWeek == DayOfWeek.Saturday || leave.Start_Date.DayOfWeek == DayOfWeek.Sunday) { ViewBag.Message = "You are applying Leave on day which is already a Holiday"; return(View()); } //else { leave.Start_Date = leave.Start_Date.Date; leave.End_Date = leave.End_Date.Date; leave.Number_of_Days = 1; if (DateTime.Now.Date.Kind == DateTimeKind.Utc) { leave.Leave_apply_date = TimeZoneInfo.ConvertTimeFromUtc(DateTime.Now.Date, indian_zone); } else if (DateTime.Now.Date.Kind != DateTimeKind.Utc) { leave.Leave_apply_date = DateTime.Now.Date; } leave.Status = "Pending on Approvers"; leave.Employe_name = Session["userName"].ToString(); leave.Employee_Id = (Session["userID"].ToString()); using (VC_LMSEntities f = new VC_LMSEntities()) { var row = f.UsersTables.Where(m => m.ROLES == "HR").FirstOrDefault(); string EmailID = row.EMAIL; string employeename = leave.Employe_name; int days_Leave = leave.Number_of_Days; SendverificationLinkEmail(EmailID, employeename, days_Leave, row.FIRST_NAME, leave.LeaveType); var emp_id = Session["userID"].ToString(); var apporvers = f.approvers.Where(y => y.Emplyoee_id == emp_id).FirstOrDefault(); if (apporvers != null) { foreach (var item in f.approvers) { if (item.Emplyoee_id == emp_id) { var approvr = f.UsersTables.Where(q => q.EMPLOYEE_ID == item.approver_id).FirstOrDefault(); SendverificationLinkEmail(approvr.EMAIL, employeename, days_Leave, approvr.FIRST_NAME, leave.LeaveType); } } } f.Leaves.Add(leave); f.SaveChanges(); ModelState.Clear(); message = "Successfully Applied"; ViewBag.Status = status; } } } catch (Exception ex) { ViewBag.Message = "Exclude Special Characters from Reason"; return(View()); } } ViewBag.Message = message; ViewBag.Status = status; ModelState.Clear(); return(View()); }