/// <summary> /// Method SetAuthorize, mengatur autorisasi pengguna yang memiliki hak akses terhadap SFS /// </summary> private void SetAuthorize() { CustomAuthentication.CustomRole customeRole = new CustomRole(); bool isPPC = customeRole.IsUserInRole(User.Identity.Name, Constants.RoleNames.PPC); bool isAdmin = customeRole.IsUserInRole(User.Identity.Name, Constants.RoleNames.Administrator); bool isPE = customeRole.IsUserInRole(User.Identity.Name, Constants.RoleNames.PE); bool isForeman = customeRole.IsUserInRole(User.Identity.Name, Constants.RoleNames.Foreman); bool isInspector = customeRole.IsUserInRole(User.Identity.Name, RoleNames.Inspector); Session["IsViewOnly"] = isPPC || isAdmin || isPE || isForeman || isInspector; }
public ActionResult Details(int?id) { if (id != null) { ViewBag.canCRUD = false; CustomRole customeRole = new CustomRole(); ViewBag.canCRUD = customeRole.IsUserInRole(User.Identity.Name, RoleNames.PPC) || customeRole.IsUserInRole(User.Identity.Name, RoleNames.SuperAdmin);//canCRUD; DateTime startDate = DateTime.Now.AddMonths(-1); startDate = startDate.AddMilliseconds(0 - startDate.Millisecond); startDate = startDate.AddSeconds(0 - startDate.Second); startDate = startDate.AddMinutes(0 - startDate.Minute); startDate = startDate.AddHours(0 - startDate.Hour); startDate = startDate.AddDays(1 - startDate.Day); DateTime endDate = DateTime.Now.AddMonths(4); MPSViewModel mpsData = new MPSViewModel(); List <PRO> listPRO = new List <PRO>(); ProductGroup groupProductData = db.ProductGroups.Find(id); ViewBag.GroupProductName = groupProductData.Name; ViewBag.week = 0; ViewBag.tanggal = DateTime.Now; ViewBag.ReasonIssue = new SelectList(db.ReasonIssues, "ID", "Name"); #region CountHolidayTotalInRange List <DateTime> holidayDateList = db.HolidayDetails.Where(x => startDate >= x.HolidayDate && endDate <= x.HolidayDate).Select(x => x.HolidayDate).Distinct().ToList(); int totalHoliday = 0; foreach (DateTime item in holidayDateList) { if (item.DayOfWeek != DayOfWeek.Saturday && item.DayOfWeek != DayOfWeek.Sunday) { totalHoliday++; } } #endregion #region SetWeekNumberDataHeaderForEachMonth CultureInfo ci = new CultureInfo("en-US"); DateTime incDateTime = startDate; do { MonthRange monthRangeData = new MonthRange(); //int? currentCapacity ProductGroupCapacity productGroupCapacity = groupProductData.ProductGroupCapacities.Where(x => x.StartMonth.AddDays(1 - x.StartMonth.Day).Date <= incDateTime.Date).OrderByDescending(o => o.StartMonth).FirstOrDefault(); monthRangeData.Month = incDateTime.Month; monthRangeData.Year = incDateTime.Year; monthRangeData.MonthDisplayText = incDateTime.ToString("MMMM", ci) + " " + incDateTime.Year.ToString(); monthRangeData.WeekNumberList.AddRange(GetWeekNumberListofMonths(incDateTime.Month, incDateTime.Year)); monthRangeData.Capacity = null; if (productGroupCapacity != null) { monthRangeData.Capacity = productGroupCapacity.Capacity; } mpsData.MonthRangeList.Add(monthRangeData); incDateTime = incDateTime.AddMonths(1); } while (incDateTime <= endDate); #endregion listPRO = db.Pros.Where(x => x.Products.ProductSubGroups.ProductGroup.ID == id).ToList(); listPRO = listPRO.Where(x => x.DueDate.Date >= startDate.Date).OrderBy(x => x.Products.Name).ThenBy(x => x.DueDate).ToList(); #region setPROMinimunDueDate foreach (PRO item in listPRO) { int processDay = 0; int pbDays = 0; if (item.Products.ProductComposition.Count() > 0) { pbDays = 10; } DateTime currentDateTime = DateTime.Now; if (item.Products.TotalDay != null) { processDay = (int)item.Products.TotalDay + pbDays; } int totalWeek = (processDay / 5); int sisaHari = processDay % 5; currentDateTime = currentDateTime.AddDays(processDay + (totalWeek * 2) + totalHoliday); item.MinimumDueDate = currentDateTime; DateTime currentMonthFirstDate = startDate.AddMonths(1); int totalActualUnitUntilCurrentMonth = item.Units.Where(x => x.ActualDeliveryDate < currentMonthFirstDate).Count(); int totalActualUnitUntilLastMonth = item.Units.Where(x => x.ActualDeliveryDate < startDate).Count(); List <MasterPlanSchedule> listMPSUntilCurrentMonth = item.MasterPlanSchedules.Where(x => x.EndWorkingDate < currentMonthFirstDate).ToList(); List <MasterPlanSchedule> listMPSUntilLastMonth = listMPSUntilCurrentMonth.Where(x => x.EndWorkingDate < startDate).ToList(); int totalPlanUntilCurrentMonth = listMPSUntilCurrentMonth.Sum(x => x.CurrentPlannedQuantity); int totalPlanUntilLastMonth = listMPSUntilLastMonth.Sum(x => x.CurrentPlannedQuantity); item.CurrentMonthCarryOver = totalPlanUntilCurrentMonth - totalActualUnitUntilCurrentMonth; item.LastMonthCarryOver = totalPlanUntilLastMonth - totalActualUnitUntilLastMonth; item.MaximumPlanQuantity = item.UnHoldUnitCount - item.Units.Where(x => x.MPSDueDate < startDate && x.IsHold == false).Count(); } #endregion //listPRO = listPRO.OrderBy(x => x.Product.Name).ThenBy(x => x.DueDate).ToList(); mpsData.PROList = listPRO; ViewBag.TotalCarryOver = listPRO.Sum(x => x.LastMonthCarryOver); ViewBag.TestPesan = debugViewMessage; return(View(mpsData)); } else { return(RedirectToAction("Index")); } }