public List <AllowanceDetailViewModel> GetExpenseDetail(string expenseCate, DateTime orderD, string orderNo, int detailNo, int dispatchNo) { List <AllowanceDetailViewModel> expenseDetailList; List <AllowanceDetailViewModel> expenseDList = null; List <AllowanceDetailViewModel> basicSettingList = null; //1. Load data from epenses details var expenseDetails = (from d in _allowanceDetailRepository.GetAllQueryable() where d.OrderD == orderD && d.OrderNo == orderNo && d.DetailNo == detailNo && d.DispatchNo == dispatchNo select d).ToList(); if (expenseDetails.Any()) { expenseDetailList = Mapper.Map <List <Allowance_D>, List <AllowanceDetailViewModel> >(expenseDetails); var result = (from l in expenseDetailList join e in _expenseRepository.GetAllQueryable() on l.AllowanceC equals e.ExpenseC into le from e in le.DefaultIfEmpty() select new AllowanceDetailViewModel() { OrderD = l.OrderD, OrderNo = l.OrderNo, DetailNo = l.DetailNo, DispatchNo = l.DispatchNo, AllowanceNo = l.AllowanceNo, AllowanceC = e.ExpenseC, AllowanceN = e.ExpenseN, Quantity = l.Quantity, Unit = l.Unit, UnitPrice = l.UnitPrice, Amount = l.Amount, Description = l.Description }).ToList(); expenseDList = result; //return result; } //2. Load data from basic setting var isFirstTime = false; var bsExpenses = _expenseService.GetExpensesFromBasicSetting(expenseCate, "-1", null, isFirstTime); if (bsExpenses != null) { basicSettingList = Mapper.Map <List <ExpenseViewModel>, List <AllowanceDetailViewModel> >(bsExpenses); //return Mapper.Map<List<ExpenseViewModel>, List<AllowanceDetailViewModel>>(bsExpenses); } return(MergeExpenseList(expenseDList, basicSettingList)); //return null; ////if basic setting don't have any config, display empty ////3. Load data from master //var initExpenseDetail = _expenseService.GetExpenseByCategory(expenseCate, "-1"); //expenseDetailList = Mapper.Map<List<ExpenseViewModel>, List<AllowanceDetailViewModel>>(initExpenseDetail); //return expenseDetailList; }
public SuggestedExpenseList GetSuggestedExpensesFromHistory(List <SuggestedRoute> suggestedRoutes) { var suggestedExpenses = new SuggestedExpenseList(); suggestedExpenses.ExpenseList = new List <CustomerPricingDetailViewModel>(); suggestedExpenses.AllowanceList = new List <CustomerPricingDetailViewModel>(); suggestedExpenses.FixedExpenseList = new List <CustomerPricingDetailViewModel>(); suggestedExpenses.OtherExpenseList = new List <CustomerPricingDetailViewModel>(); var expenseCate = Convert.ToInt32(ExpenseCategory.Expense).ToString(); var allowanceCate = Convert.ToInt32(ExpenseCategory.Allowance).ToString(); var expenseRoot = Convert.ToInt32(ExpenseRoot.History).ToString(); foreach (var suggestedRoute in suggestedRoutes) { var history = suggestedRoute; #region Get expense history var exCate = expenseCate; var historyExpenses = (from p in _expenseDetailRepository.GetAllQueryable() join e in _expenseRepository.GetAllQueryable() on p.ExpenseC equals e.ExpenseC into pe from e in pe.DefaultIfEmpty() where p.OrderD == history.OrderD & p.OrderNo == history.OrderNo & p.DetailNo == history.DetailNo & p.DispatchNo == history.DispatchNo & p.IsIncluded == "1" & p.IsRequested == "0" select new CustomerPricingDetailViewModel() { CategoryI = exCate, ExpenseC = p.ExpenseC, ExpenseN = e.ExpenseN, Unit = p.Unit, UnitPrice = p.UnitPrice, Quantity = p.Quantity, Amount = p.Amount, OrderD = p.OrderD, OrderNo = p.OrderNo, DetailNo = p.DetailNo, DispatchNo = p.DispatchNo, ExpenseRoot = expenseRoot }).ToList(); if (historyExpenses.Any()) { suggestedExpenses.ExpenseList.AddRange(historyExpenses); } #endregion #region Get allowance history var allCate = allowanceCate; var historyAllowances = (from p in _allowanceDetailRepository.GetAllQueryable() join e in _expenseRepository.GetAllQueryable() on p.AllowanceC equals e.ExpenseC into pe from e in pe.DefaultIfEmpty() where p.OrderD == history.OrderD & p.OrderNo == history.OrderNo & p.DetailNo == history.DetailNo & p.DispatchNo == history.DispatchNo select new CustomerPricingDetailViewModel() { CategoryI = allCate, ExpenseC = p.AllowanceC, ExpenseN = e.ExpenseN, Unit = p.Unit, UnitPrice = p.UnitPrice, Quantity = p.Quantity, Amount = p.Amount, OrderD = p.OrderD, OrderNo = p.OrderNo, DetailNo = p.DetailNo, DispatchNo = p.DispatchNo, ExpenseRoot = expenseRoot }).ToList(); if (historyAllowances.Any()) { suggestedExpenses.AllowanceList.AddRange(historyAllowances); } #endregion } return(suggestedExpenses); }
public List <RouteExpenseViewModel> GetExpensesHistory(string expenseC, string categoryI, string departureC, string destinationC, string conSizeI, string conTypeC) { if (categoryI == Convert.ToInt32(ExpenseCategory.Expense).ToString()) { var historyExpenses = from e in _expenseDetailRepository.GetAllQueryable() join d in _dispatchRepository.GetAllQueryable() on new { e.OrderD, e.OrderNo, e.DetailNo, e.DispatchNo } equals new { d.OrderD, d.OrderNo, d.DetailNo, d.DispatchNo } into ed from d in ed.DefaultIfEmpty() join c in _containerRepository.GetAllQueryable() on new { d.OrderD, d.OrderNo, d.DetailNo } equals new { c.OrderD, c.OrderNo, c.DetailNo } into edc from c in edc.DefaultIfEmpty() where e.ExpenseC == expenseC && c.ContainerSizeI == conSizeI && c.ContainerTypeC == conTypeC && d.DispatchStatus == Constants.CONFIRMED && ((string.IsNullOrEmpty(d.Location1C) & !string.IsNullOrEmpty(d.Location2C) & (d.Location2C == departureC || (!string.IsNullOrEmpty(d.Location3C) && d.Location3C == destinationC))) || (!string.IsNullOrEmpty(d.Location1C) & (d.Location1C == departureC || (!string.IsNullOrEmpty(d.Location3C) && d.Location3C == destinationC) || (string.IsNullOrEmpty(d.Location3C) && !string.IsNullOrEmpty(d.Location2C) && d.Location2C == destinationC)))) select new RouteExpenseViewModel() { UsedExpenseD = e.OrderD, Quantity = e.Quantity, Unit = e.Unit, UnitPrice = e.UnitPrice, Amount = e.Amount }; if (historyExpenses.Any()) { historyExpenses = historyExpenses.OrderBy("UsedExpenseD descending"); var limitedHistoryExpenses = historyExpenses.Skip(0).Take(10).ToList(); return(limitedHistoryExpenses); } } else if (categoryI == Convert.ToInt32(ExpenseCategory.Allowance).ToString()) { var historyAllowances = from e in _allowanceDetailRepository.GetAllQueryable() join d in _dispatchRepository.GetAllQueryable() on new { e.OrderD, e.OrderNo, e.DetailNo, e.DispatchNo } equals new { d.OrderD, d.OrderNo, d.DetailNo, d.DispatchNo } into ed from d in ed.DefaultIfEmpty() join c in _containerRepository.GetAllQueryable() on new { d.OrderD, d.OrderNo, d.DetailNo } equals new { c.OrderD, c.OrderNo, c.DetailNo } into edc from c in edc.DefaultIfEmpty() where e.AllowanceC == expenseC && c.ContainerSizeI == conSizeI && c.ContainerTypeC == conTypeC && d.DispatchStatus == Constants.CONFIRMED && ((string.IsNullOrEmpty(d.Location1C) & !string.IsNullOrEmpty(d.Location2C) & (d.Location2C == departureC || (!string.IsNullOrEmpty(d.Location3C) && d.Location3C == destinationC))) || (!string.IsNullOrEmpty(d.Location1C) & (d.Location1C == departureC || (!string.IsNullOrEmpty(d.Location3C) && d.Location3C == destinationC) || (string.IsNullOrEmpty(d.Location3C) && !string.IsNullOrEmpty(d.Location2C) && d.Location2C == destinationC)))) select new RouteExpenseViewModel() { UsedExpenseD = e.OrderD, Quantity = e.Quantity, Unit = e.Unit, UnitPrice = e.UnitPrice, Amount = e.Amount }; if (historyAllowances.Any()) { historyAllowances = historyAllowances.OrderBy("UsedExpenseD descending"); var limitedhistoryAllowances = historyAllowances.Skip(0).Take(10).ToList(); return(limitedhistoryAllowances); } } return(null); }