public ActionResult create() { try { ViewBag.Employee_Profile = dbcontext.Employee_Profile.Where(a => a.Active == true).ToList().Select(m => new { Code = m.Code + "-[" + m.Full_Name + ']', ID = m.ID }); ViewBag.Vacations_Setup = dbcontext.Vacations_Setup.ToList().Select(m => new { Code = "" + m.LeaveTypeCode + "-----[" + m.LeaveTypeNameEnglish + ']', ID = m.ID }).ToList(); //DateTime Statis = DateTime.Now; var new_record = new LeavesRequestMaster { DateFrom = DateTime.Now, DateTo = DateTime.Now, ActualToDate = DateTime.Now, CurrentDate = DateTime.Now, Created_Date = DateTime.Now, Created_By = User.Identity.Name, RemainDays = 0, TotalDays = 0 }; var stru = dbcontext.StructureModels.FirstOrDefault(m => m.All_Models == ChModels.Personnel).Structure_Code; var model_ = dbcontext.LeavesRequestMaster.ToList(); if (model_.Count() == 0) { new_record.SerialNo = stru + "1"; } else { new_record.SerialNo = stru + (model_.LastOrDefault().ID + 1).ToString(); } var model = new Headers { LeavesRequestMaster = new_record, check_status = check_status.Pending }; return(View(model)); } catch (Exception) { return(RedirectToAction("index")); } }
public ActionResult Create(Headers model, FormCollection form) { try { var Bal = dbcontext.Vacations_Setup.FirstOrDefault(a => a.ID == model.LeavesRequestMaster.VacCode); var Employee_Profile = dbcontext.Employee_Profile.FirstOrDefault(a => a.ID == model.LeavesRequestMaster.EmployeeID).Personnel_Information; DateTime Hire = Employee_Profile.Hire_Date; var EmploymentDate = Hire.AddMonths(Bal.TakenAfterEmploymentDate); if (Bal.TakenAfterEmploymentDate > 0) { if (DateTime.Compare(DateTime.Now, EmploymentDate) < 0) { TempData["Message"] = "It must be a Taken After Employment Date equal or bigger from '" + Bal.TakenAfterEmploymentDate + "'"; return(RedirectToAction("Create")); } } if (Bal.AcceptNegative == false || Bal.UnlimitedBalance == false) { if (model.LeavesRequestMaster.RemainDays <= -1) { TempData["Message"] = "Balance Is Not Enough"; return(RedirectToAction("Create")); } } ViewBag.Employee_Profile = dbcontext.Employee_Profile.Where(a => a.Active == true).ToList().Select(m => new { Code = m.Code + "-[" + m.Full_Name + ']', ID = m.ID }); ViewBag.Vacations_Setup = dbcontext.Vacations_Setup.ToList().Select(m => new { Code = "" + m.LeaveTypeCode + "-----[" + m.LeaveTypeNameEnglish + ']', ID = m.ID }).ToList(); LeavesRequestMaster new_Record = new LeavesRequestMaster(); new_Record.SerialNo = model.LeavesRequestMaster.SerialNo; new_Record.EmployeeID = model.LeavesRequestMaster.EmployeeID; new_Record.VacCode = model.LeavesRequestMaster.VacCode; new_Record.DateFrom = model.LeavesRequestMaster.DateFrom; new_Record.DateTo = model.LeavesRequestMaster.DateTo; new_Record.CurrentDate = model.LeavesRequestMaster.CurrentDate; new_Record.ActualToDate = model.LeavesRequestMaster.ActualToDate; new_Record.EmpAlternative = model.LeavesRequestMaster.EmpAlternative; new_Record.Reason = model.LeavesRequestMaster.Reason; new_Record.Approved = check_status.Pending.GetHashCode(); new_Record.EmpApproved = model.LeavesRequestMaster.EmpApproved; new_Record.RequestTypeCode = model.LeavesRequestMaster.RequestTypeCode; new_Record.ReturnVac = model.LeavesRequestMaster.ReturnVac; new_Record.Settled = model.LeavesRequestMaster.Settled; new_Record.CasualLeave = model.LeavesRequestMaster.CasualLeave; new_Record.PointID = model.LeavesRequestMaster.PointID; new_Record.WithTicket = model.LeavesRequestMaster.WithTicket; new_Record.WithExitReEntry = model.LeavesRequestMaster.WithExitReEntry; new_Record.AttachedFile = model.LeavesRequestMaster.AttachedFile; DateTime?DateFrom = model.LeavesRequestMaster.DateFrom; var Year = DateFrom.Value.Year; var Month = DateFrom.Value.Month; var LeavesRequest = dbcontext.LeavesRequestMaster.Where(a => a.EmployeeID == model.LeavesRequestMaster.EmployeeID && a.VacCode == model.LeavesRequestMaster.VacCode && a.year == Year && a.CasualLeave == true).ToList(); var LeavesRequestMaster = dbcontext.LeavesRequestMaster.Where(a => a.EmployeeID == model.LeavesRequestMaster.EmployeeID && a.VacCode == model.LeavesRequestMaster.VacCode && a.year == Year).ToList(); if (model.LeavesRequestMaster.CasualLeave == true) { if (Bal.MaxContinousDays < model.LeavesRequestMaster.TotalDays) { TempData["Message"] = "It must be a Max Continous Days equal or less from '" + Bal.MaxContinousDays + "' "; return(RedirectToAction("Create")); } var AllDays = new List <double?>(); if (LeavesRequest != null) { for (int i = 0; i < LeavesRequest.Count; i++) { var Rem = LeavesRequest[i].TotalDays; var Day = AllDays.LastOrDefault(); if (Day == null) { Day = Rem; AllDays.Add(Day); } else { var All = Day + Rem; AllDays.Add(All); } } var RemainDay = Bal.MaxCasualDays - model.LeavesRequestMaster.TotalDays - AllDays.LastOrDefault(); if (RemainDay < 0) { TempData["Message"] = "It must be a Max Casual Days equal or less from '" + Bal.MaxCasualDays + "' "; return(RedirectToAction("Create")); } } } if (Bal.MaximumDaysContinous > 0) { if (Bal.MaximumDaysContinous < model.LeavesRequestMaster.TotalDays) { TempData["Message"] = "It must be a Maximum Days Continous equal or less from '" + Bal.MaximumDaysContinous + "' "; return(RedirectToAction("Create")); } } if (LeavesRequestMaster != null) { var AllDays = new List <double?>(); for (int i = 0; i < LeavesRequestMaster.Count; i++) { var ActualToDate = LeavesRequestMaster[i].ActualToDate.Value.Month; if (ActualToDate == Month) { var Rem = LeavesRequestMaster[i].TotalDays; var Day = AllDays.LastOrDefault(); if (Day == null) { Day = Rem; AllDays.Add(Day); } else { var All = Day + Rem; AllDays.Add(All); } } } var RemainDay = Bal.MaximumDaysPerMonth - model.LeavesRequestMaster.TotalDays - AllDays.LastOrDefault(); if (RemainDay < 0) { TempData["Message"] = "It must be a Maximum Days Per Month equal or less from '" + Bal.MaximumDaysPerMonth + "' "; return(RedirectToAction("Create")); } } var CurrentBalance = form["CurrentBalance"].Split(','); var FromBalance = form["FromBalance"].Split(','); DateTime?year = DateTime.Parse(FromBalance[0]); int FBalance = year.Value.Year; new_Record.year = FBalance; if (LeavesRequestMaster.Count == 0) { double?Balance = Convert.ToDouble(CurrentBalance[0]); new_Record.BalanceDays = Balance; } else { var LeavesRequestMasters = dbcontext.LeavesRequestMaster.Where(a => a.EmployeeID == model.LeavesRequestMaster.EmployeeID && a.VacCode == model.LeavesRequestMaster.VacCode && a.year == Year).ToList(); var Leaves = LeavesRequestMasters.LastOrDefault(); new_Record.BalanceDays = Leaves.RemainDays; } new_Record.TotalDays = model.LeavesRequestMaster.TotalDays; new_Record.RemainDays = model.LeavesRequestMaster.RemainDays; new_Record.Serial_LB = model.LeavesRequestMaster.Serial_LB; new_Record.HalfDay = model.LeavesRequestMaster.HalfDay; new_Record.QuarterDay = model.LeavesRequestMaster.QuarterDay; new_Record.QuarterDayCode = model.LeavesRequestMaster.QuarterDayCode; new_Record.ShiftFirstHalf = model.LeavesRequestMaster.ShiftFirstHalf; new_Record.Company_ID = model.LeavesRequestMaster.Company_ID; new_Record.RowIndx = model.LeavesRequestMaster.RowIndx; new_Record.Created_By = User.Identity.Name; new_Record.Created_Date = DateTime.Now.Date; new_Record.Modified_By = model.LeavesRequestMaster.Modified_By; new_Record.Modified_Date = model.LeavesRequestMaster.Modified_Date; new_Record.ReportAsReadyDate = model.LeavesRequestMaster.ReportAsReadyDate; new_Record.ReportAsReadyBy = model.LeavesRequestMaster.ReportAsReadyBy; new_Record.ApprovedBy = model.LeavesRequestMaster.ApprovedBy; new_Record.ApprovedDate = model.LeavesRequestMaster.ApprovedDate; new_Record.RejectedBy = model.LeavesRequestMaster.RejectedBy; new_Record.RejectedDate = model.LeavesRequestMaster.RejectedDate; new_Record.CanceledBy = model.LeavesRequestMaster.CanceledBy; new_Record.CanceledDate = model.LeavesRequestMaster.CanceledDate; new_Record.RejectedBy = model.LeavesRequestMaster.RejectedBy; new_Record.RejectedDate = model.LeavesRequestMaster.RejectedDate; new_Record.ManagerID = model.LeavesRequestMaster.ManagerID; new_Record.AltEmpAgreed = model.LeavesRequestMaster.AltEmpAgreed; new_Record.AltEmpDisagreeReason = model.LeavesRequestMaster.AltEmpDisagreeReason; new_Record.ManagerNotes = model.LeavesRequestMaster.ManagerNotes; new_Record.HRNotes = model.LeavesRequestMaster.HRNotes; new_Record.GMNotes = model.LeavesRequestMaster.GMNotes; new_Record.LastOrder = model.LeavesRequestMaster.LastOrder; new_Record.check_status = HR.Models.Infra.check_status.Pending; new_Record.name_state = nameof(check_status.Pending); var username = User.Identity.GetUserName(); var Date = Convert.ToDateTime("1/1/1900"); var s = new status { statu = HR.Models.Infra.check_status.created, created_by = username, Type = Models.Infra.Type.LeavesRequestMaster, approved_bydate = Date, cancaled_bydate = Date, created_bydate = DateTime.Now.Date, Rejected_bydate = Date, return_to_reviewdate = Date }; var st = dbcontext.status.Add(s); dbcontext.SaveChanges(); new_Record.statID = s.ID; var LeavesTransactionBalance = dbcontext.LeavesTransactionBalance.Where(a => a.VacCode == model.LeavesRequestMaster.VacCode && a.EmployeeID == model.LeavesRequestMaster.EmployeeID && a.Year == year.Value.Year && a.Check == true).ToList(); var LeavesTransaction = LeavesTransactionBalance.LastOrDefault(); var Header = dbcontext.LeavesRequestMaster.Add(new_Record); dbcontext.SaveChanges(); if (LeavesTransaction != null && LeavesTransaction.Check == true) { LeavesTransaction.Check = false; dbcontext.SaveChanges(); } return(RedirectToAction("index")); } catch (Exception e) { return(View(model)); } }
public ActionResult Create(LeavesMass_Transaction model, FormCollection form, string Command) { try { List <SelectListItem> items = new List <SelectListItem>(); items.Insert(0, (new SelectListItem { Text = "All employee", Value = "1", })); items.Insert(1, (new SelectListItem { Text = "unit", Value = "2", })); items.Insert(2, (new SelectListItem { Text = "nationality", Value = "3", })); items.Insert(3, (new SelectListItem { Text = "Work location", Value = "4", })); items.Insert(4, (new SelectListItem { Text = "Cost center", Value = "5", })); items.Insert(5, (new SelectListItem { Text = "Cadre level", Value = "6", })); ViewBag.Object = new SelectList(items, "Value", "Text"); ViewBag.Employee_Profile = dbcontext.Employee_Profile.Where(a => a.Active == true).ToList().Select(m => new { Code = m.Code + "-[" + m.Full_Name + ']', ID = m.ID }); ViewBag.Vacations_Setup = dbcontext.Vacations_Setup.ToList().Select(m => new { Code = "" + m.LeaveTypeCode + "-----[" + m.LeaveTypeNameEnglish + ']', ID = m.ID }).ToList(); var model_ = dbcontext.LeavesMass_Transaction.ToList(); var TransactionCode = "0"; if (model_.Count() == 0) { TransactionCode = "1"; } else { TransactionCode = (model_.LastOrDefault().ID + 1).ToString(); } var ID_emp = form["ID_emp"].Split(','); var CodeEmp = form["CodeEmp"].Split(','); var NameEmp = form["NameEmp"].Split(','); var CodeVac = form["CodeVac"].Split(','); var NameVac = form["NameVac"].Split(','); var BalDay = form["BalDay"].Split(','); var TotalDay = form["TotalDay"].Split(','); var Reason = form["Reason"].Split(','); var FromBalance = form["FromBalance"].Split(','); for (var i = 0; i < CodeEmp.Length; i++) { if (CodeEmp[i] != "") { LeavesMass_Transaction new_Record = new LeavesMass_Transaction(); var LeavesRequestMaster = dbcontext.LeavesRequestMaster.ToList(); var stru = dbcontext.StructureModels.FirstOrDefault(m => m.All_Models == ChModels.Personnel).Structure_Code; var model2 = dbcontext.LeavesMass_Transaction.ToList(); if (model2.Count() == 0) { new_Record.SerialNo = stru + "1"; } else { new_Record.SerialNo = stru + (model2.LastOrDefault().ID + 1).ToString(); } new_Record.TransactionCode = TransactionCode; new_Record.TransactionDate = DateTime.Now; new_Record.Created_By = User.Identity.Name; new_Record.Created_Date = DateTime.Now.Date; var new_details = new LeavesRequestMaster(); if (LeavesRequestMaster.Count() == 0) { new_details.SerialNo = stru + "1"; } else { new_details.SerialNo = stru + (LeavesRequestMaster.LastOrDefault().ID + 1).ToString(); } var codeva = CodeVac[i]; var codeem = CodeEmp[i]; var emp = dbcontext.Employee_Profile.FirstOrDefault(a => a.Code == codeem); var Vacations = dbcontext.Vacations_Setup.FirstOrDefault(a => a.LeaveTypeCode == codeva); var Balance = double.Parse(BalDay[i]); var Total = double.Parse(TotalDay[i]); DateTime?year = DateTime.Parse(FromBalance[1]); int FBalance = year.Value.Year; new_details.year = FBalance; DateTime?dateOrNull = model.TransactionDate; if (dateOrNull != null) { new_details.DateFrom = dateOrNull.Value; } DateTime?dateOrNull2 = model.Created_Date; if (dateOrNull2 != null) { new_details.DateTo = dateOrNull2.Value; } new_details.EmployeeID = emp.ID; new_details.VacCode = Vacations.ID; //new_details.DateFrom = model.TransactionDate; //new_details.DateTo = model.Created_Date; new_details.CurrentDate = DateTime.Now.Date; new_details.ActualToDate = model.Created_Date; new_details.Reason = Reason[i]; new_details.Approved = check_status.Approved.GetHashCode(); new_details.BalanceDays = Balance; new_details.TotalDays = Total; new_details.RemainDays = Balance - Total; new_details.Created_By = User.Identity.Name; new_details.Created_Date = DateTime.Now.Date; new_details.check_status = HR.Models.Infra.check_status.Approved; new_details.name_state = nameof(check_status.Approved); var username = User.Identity.GetUserName(); var Date = Convert.ToDateTime("1/1/1900"); var s = new status { statu = HR.Models.Infra.check_status.created, created_by = username, Type = Models.Infra.Type.LeavesRequestMaster, approved_bydate = Date, cancaled_bydate = Date, created_bydate = DateTime.Now.Date, Rejected_bydate = Date, return_to_reviewdate = Date }; var st = dbcontext.status.Add(s); dbcontext.SaveChanges(); new_details.statID = s.ID; var LeavesTransactionBalance = dbcontext.LeavesTransactionBalance.Where(a => a.VacCode == Vacations.ID && a.EmployeeID == emp.ID && a.Year == year.Value.Year && a.Check == true).ToList(); var LeavesTransaction = LeavesTransactionBalance.LastOrDefault(); dbcontext.LeavesMass_Transaction.Add(new_Record); dbcontext.SaveChanges(); dbcontext.LeavesRequestMaster.Add(new_details); dbcontext.SaveChanges(); if (LeavesTransaction != null && LeavesTransaction.Check == true) { LeavesTransaction.Check = false; dbcontext.SaveChanges(); } } } return(RedirectToAction("index", "LeaveRequest")); } catch (Exception e) { return(View(model)); } }