public TimeSheetsAndCount GetTimeSheetList(int idDepartment, TimeSheetFilter filter, int skip, int take) { using (var db = new KadrDataContext()) //using (var dbloger = new DataContextLoger("GetTimeSheetList.txt", FileMode.OpenOrCreate, db)) { var approveSteps = TimeSheetFilterAdapter(filter); var query = db.TimeSheetView.Where( w => w.idDepartment == idDepartment && approveSteps.Contains(w.ApproveStep) ); return(new TimeSheetsAndCount { Count = query.Count(), TimeSheets = query.OrderByDescending(o => o.DateBeginPeriod) .ThenByDescending(t => t.DateComposition) .Skip(skip) .Take(take) .Select(s => DtoClassConstructor.DtoTimeSheet(s)).ToArray() }); } }
//=================================================================================== private IEnumerable <int> TimeSheetFilterAdapter(TimeSheetFilter filter) { switch (filter) { case TimeSheetFilter.All: return(new[] { 0, 1, 2, 3 }); case TimeSheetFilter.Edit: return(new[] { 0 }); case TimeSheetFilter.Approve: return(new[] { 1, 2 }); case TimeSheetFilter.Approved: return(new[] { 3 }); default: throw new System.Exception("Заданое условие фильтрации недоступно"); } }
public ActionResult TimeSheetList(int id, int page = 1, TimeSheetFilter filter = TimeSheetFilter.All) { var approver = GetCurrentApprover(); var skip = page > 1?TimeSheetsPerPage * (page - 1):0; var r = Provider.GetTimeSheetList(id, filter, skip, TimeSheetsPerPage); ViewBag.TimeSheetCount = (int)Math.Ceiling(r.Count / (double)TimeSheetsPerPage); ViewBag.idDepartment = id; ViewBag.approver = approver; ViewBag.Filter = filter; ViewBag.CuttentPage = page; try { ViewBag.Department = approver.DtoApproverDepartments.First(w => w.IdDepartment == id); } catch (System.Exception e) { return(RedirectToNotFoundPage("Запрашиваемый отдел не обнаружен. Отдел " + id)); } var timeSheetList = r.TimeSheets.OrderBy(o => o.DateBegin); return(View(timeSheetList)); }