private void LoadSelectedCapex() { if (SelectedCapex != null) { CapexAccountsList.Clear(); StatusSumList.Clear(); var query = from a in AccountsList where a.AccountsStatusDetailsSets.LastOrDefault().AccountStatus != Statuses.InCancel && a.AccountsCapexInfoSets.Any(c => c.CapexId == SelectedCapex.Capex.Id) select new AccountsWithStatus { Account = a, Status = a.AccountsStatusDetailsSets.LastOrDefault(), StoresList = _storesList.Where(s => a.AccountsStoreDetailsSets.Any(store => store.AccountStore == s.StoreNumber)).ToList() }; var groups = from a in AccountsList where a.AccountsStatusDetailsSets.LastOrDefault().AccountStatus != Statuses.InCancel && a.AccountsCapexInfoSets.Any(c => c.CapexId == SelectedCapex.Capex.Id) group a by a.AccountsStatusDetailsSets.LastOrDefault().AccountStatus into status select new StatusSum { Status = status.Key, Sum = status.Sum(s => s.AccountsCapexInfoSets.Where(c => c.CapexId == SelectedCapex.Capex.Id).Sum(c => c.AccountCapexAmount)) }; foreach (var item in query) { CapexAccountsList.Add(item); } foreach (var item in groups) { StatusSumList.Add(item); } } }
private void LoadCapex() { if (SelectedYear != 0) { CapexList.Clear(); CapexAccountsList.Clear(); StatusSumList.Clear(); foreach (var capex in FullCapexList.Where(f => f.CapexYear == SelectedYear)) { var capexWithRest = new CapexWithRest(); capexWithRest.Capex = capex; var sum = AccountsList.Where(a => a.AccountsStatusDetailsSets.LastOrDefault().AccountStatus != Statuses.InCancel).Sum(a => a.AccountsCapexInfoSets.Where(c => c.CapexId == capex.Id).Sum(c => c.AccountCapexAmount)); if (capex.CapexAmount == 0) { capexWithRest.Rest = sum; capexWithRest.Pay = 100; } else { capexWithRest.Rest = capex.CapexAmount - sum; capexWithRest.Pay = sum == 0 ? 0 : Convert.ToInt32(sum * 100 / capex.CapexAmount); } capexWithRest.PaySum = sum; CapexList.Add(capexWithRest); } } }