public override List <FreelanceListItem> GetProjects(string userIdParam) { using (_unitOfWork = DIManager.UnitOfWork) { int userId = Convert.ToInt32(userIdParam); var projects = _unitOfWork.PersonalAccountantContext.Set <other_Projects>().Where(x => x.UserId == userId)?.Select(x => new FreelanceListItem { Name = x.Name, FullHours = x.TotalHours, SumPerHour = x.SumPerHour, PayedHours = x.other_FreelancePayement.Sum(z => z.HoursPayed), UnpayedHours = x.other_SpendHoursPerProject.Sum(z => z.SpendHours), Id = x.Id, IsEnded = x.IsEnded }).ToList(); foreach (var project in projects) { project.UnpayedHours -= project.PayedHours; var projectModel = _unitOfWork.PersonalAccountantContext.Set <other_FreelancePayement>().Where(x => x.ProjectId == project.Id).Select(x => new FinanceOperationModel() { CurrencyName = x.Currency.Name, Summ = x.SumPayed }).FirstOrDefault(); if (projectModel != null) { project.PayedSum = rateScriptor.ChangeBuyRateForCurrency(projectModel.Summ, projectModel.CurrencyName, "USD"); } } return(projects); } }
public List <DebtFullStatisticModel> GetDebtTable() { using (_unitofWork = DIManager.UnitOfWork) { var model = _unitofWork.PersonalAccountantContext.Set <debt_DebtOperations>().Where(x => x.IsInProgress).ToList(); return(model.Select(x => new DebtFullStatisticModel { Name = x.debt_DebtAgent.Name, DebtType = x.DebtTypeId == 1 ? "Debit" : "Credit", AllSum = _rateScriptor.ChangeBuyRateForCurrency(x.RewardSum + x.StartSum, x.Currency.Name, "usd"), EndDateFull = x.EndDate, LeftToReturn = _rateScriptor.ChangeBuyRateForCurrency(x.RewardSum + x.StartSum - (x.debt_Transactions.Any() ? x.debt_Transactions.Sum(y => y.Sum) : 0), x.Currency.Name, "usd"), Comment = x.Comment, Detailed = x.Id }).ToList()); } }
private static void GetCreditNotPayForToLong(PAccountantEntities context, List <string> notificationsList) { var operationWithTwoLastTransactions = context.debt_DebtOperations.Where(x => x.EndDate < DateTime.Now && x.IsInProgress && x.DebtTypeId == 2).ToDictionary(x => x.Id, x => x.debt_Transactions.OrderBy(y => y.Date).Select(y => new { Date = y.Date, AgentName = x.debt_DebtAgent.Name, LeftSum = x.StartSum + x.RewardSum - x.debt_Transactions.Sum(z => z.Sum), TransactionSum = y.Sum, CurrencyName = y.debt_DebtOperations.Currency.Name }).Take(1)); foreach (var operation in operationWithTwoLastTransactions) { if (operation.Value.Any() && (DateTime.Now - operation.Value.Max(x => x.Date)).TotalDays >= 28) { var transactionValue = operation.Value.FirstOrDefault(x => x.Date == operation.Value.Max(y => y.Date)); notificationsList.Add("No return for too long period from " + transactionValue.AgentName + ". Last payment was mad " + transactionValue.Date.ToShortDateString() + ":" + String.Format("{0:0.00}", _rateScriptor.ChangeBuyRateForCurrency(transactionValue.TransactionSum, transactionValue.CurrencyName, "usd")) + "$" + ". Agent Still Should pay " + String.Format("{0:0.00}", _rateScriptor.ChangeBuyRateForCurrency(transactionValue.LeftSum, transactionValue.CurrencyName, "usd")) + "$"); } } }