public ActionResult PositionSearch(int?SearchType, int?TypeId, DateTime?ReportForTime) { var model = new PositionSearchModel(); if (Request.Form.Count == 0) { PopulatePositionSearchListItems(model); return(View(model)); } var criteria = new PositionSearchCriteria() { ReportForTime = ReportForTime }; if (TypeId.HasValue) { var searchType = (PositionSearchType)SearchType.Value; switch (searchType) { case PositionSearchType.Region: criteria.RegionId = TypeId; break; case PositionSearchType.Branch: criteria.BranchId = TypeId; break; case PositionSearchType.Receiver: criteria.ReceiverId = TypeId; break; case PositionSearchType.Position: criteria.PositionId = TypeId; break; default: throw new ArgumentException("Invalid SearchType " + SearchType.Value); } } var list = _dao.GetPositionSearchReport(criteria); model.ReportItems = list; if (Request.IsAjaxRequest()) { return(PartialView("PositionSearchList", model)); } else { PopulatePositionSearchListItems(model); } return(View(model)); }
public List <PositionSearchReportItem> GetPositionSearchReport(PositionSearchCriteria criteria) { var paramNames = new List <string>(); var paramObjects = new List <SqlParameter>(); int i = 0; string p; if (criteria.RegionId.HasValue) { p = "@p" + i++.ToString(); paramNames.Add("@regionId = " + p); paramObjects.Add(new SqlParameter(p, criteria.RegionId.Value)); } if (criteria.BranchId.HasValue) { p = "@p" + i++.ToString(); paramNames.Add("@branchId = " + p); paramObjects.Add(new SqlParameter(p, criteria.BranchId.Value)); } if (criteria.ReceiverId.HasValue) { p = "@p" + i++.ToString(); paramNames.Add("@receiverId = " + p); paramObjects.Add(new SqlParameter(p, criteria.ReceiverId.Value)); } if (criteria.PositionId.HasValue) { p = "@p" + i++.ToString(); paramNames.Add("@positionId = " + p); paramObjects.Add(new SqlParameter(p, criteria.PositionId.Value)); } if (criteria.ReportForTime.HasValue) { p = "@p" + i++.ToString(); paramNames.Add("@forTime = " + p); paramObjects.Add(new SqlParameter(p, criteria.ReportForTime.Value)); } var query = context.Database.SqlQuery <PositionSearchReportItem>("spPositionSearch " + string.Join(", ", paramNames.ToArray()), paramObjects.ToArray()); var list = query.ToList(); //Assign indexes int index = 1; list.ForEach(x => x.Index = index++); return(list); }