public JsonResult GetPairingInfo(string pairName) { var dataRows = Repository.GetRepository().LoadData("Select * from t_pairingmatrix where pairone='" + pairName + "' OR pairtwo='" + pairName + "'").Rows.Cast <DataRow>(); var pairCollatedInfos = new List <PairCollatedInfo>(); var userArray = GetAllUserDetails().ToList(); var primaryPair = userArray.Find(model => model.UserName == pairName); dataRows.ToList().ForEach(row => { var pairone = row["PAIRONE"].ToString(); var pairtwo = row["PAIRTWO"].ToString(); var secondPair = pairone == pairName ? userArray.Find(model => model.UserName == pairtwo) : userArray.Find(model => model.UserName == pairone); var alreadyAvailableTuple = pairCollatedInfos.Find(info => info.SecondPair == secondPair); if (alreadyAvailableTuple != null) { alreadyAvailableTuple.WorkedFor += Convert.ToDouble(row["PAIRTIME"]); } else { var pairCollatedInfo = new PairCollatedInfo() { FirstPair = primaryPair, SecondPair = secondPair, WorkedFor = Convert.ToDouble(row["PAIRTIME"]) }; pairCollatedInfos.Add(pairCollatedInfo); } }); return(new JsonResult() { Data = pairCollatedInfos, JsonRequestBehavior = JsonRequestBehavior.AllowGet }); }
public ActionResult ViewStatistics(bool?isAllData) { var shouldShowAllData = isAllData.HasValue && isAllData.Value; var dataRows = Repository.GetRepository().LoadData("Select * from t_pairingmatrix").Rows.Cast <DataRow>(); ViewBag.PairingDetails = dataRows; var dataForPairing = dataRows; if (!shouldShowAllData) { var dayBeforeTwoWeeks = System.DateTime.Now.Subtract(new TimeSpan(14, 0, 0, 0)); dataForPairing = dataRows.Where(row => Convert.ToDateTime(row["PAIRDATE"]) >= dayBeforeTwoWeeks); } var userArray = GetAllUserDetails().ToArray(); var collatedPairDetails = new List <PairCollatedInfo>(); var notPairedPeople = new List <PairCollatedInfo>(); var notLonePairedPeople = new List <PairCollatedInfo>(); var lonePairedPeople = new List <PairCollatedInfo>(); for (var i = 0; i < userArray.Length; i++) { for (var j = i; j < userArray.Length; j++) { var pairOne = userArray[i]; var pairTwo = userArray[j]; var allRowsOfThisCombination = dataForPairing.Where( row => isThesePairsInAnyCombination(pairTwo, pairOne, row)); var workedForDays = allRowsOfThisCombination.Sum(row => Convert.ToDouble(row["PAIRTIME"])); var pairCollatedInfo = new PairCollatedInfo() { FirstPair = pairOne, SecondPair = pairTwo, WorkedFor = workedForDays }; if (workedForDays.Equals(0)) { if (pairOne != pairTwo) { notPairedPeople.Add(pairCollatedInfo); } else { notLonePairedPeople.Add(pairCollatedInfo); } } else { if (pairOne != pairTwo) { collatedPairDetails.Add(pairCollatedInfo); } else { lonePairedPeople.Add(pairCollatedInfo); } } } } collatedPairDetails = collatedPairDetails.OrderBy(info => info.WorkedFor).ToList(); ViewBag.SuggestionPairDetails = collatedPairDetails; ViewBag.CollatedPairDetails = collatedPairDetails.OrderBy(info => info.WorkedFor).Reverse().ToList(); ViewBag.NotPairedInfo = notPairedPeople; ViewBag.NotLonePairedInfo = notLonePairedPeople; ViewBag.LonePairedInfo = lonePairedPeople; ViewBag.ShowingAllData = shouldShowAllData; var list = userArray.Select(model => model.UserName).ToList(); list.Insert(0, "Please choose one user"); ViewBag.UserNames = list; return(View()); }