public Contractor GetOwner(Wagon wagon) { Operation lastSale = GetLastSaleOperation(wagon); if (lastSale == null) { return(null); } return(GetContractorById(lastSale.ReceiverContractorID)); }
public DateTime GetAvailableStartRentWithUnlimitedEnd(Wagon wagon) { DateTime today = DateTime.Today; //дата вступления во владение DateTime takePossessionDate = GetLastSaleOperation(wagon).StartDate; //дата когда истекает срок аренды DateTime?latestRentDate = GetLatestDateRentExpiresOn(wagon); //если срок аренды вагона уже истек или по вагону не было операций аренды, то сдать в аренду можно в день втупления во владение if (latestRentDate < today || !latestRentDate.HasValue) { return(takePossessionDate < today ? today : takePossessionDate); } //если срок аренды еще не истек - сдать в аренду без ограничения конечной даты можно только начиная с даты когда вагон возвращается в управление владельца return(latestRentDate > takePossessionDate?latestRentDate.Value.AddDays(1) : takePossessionDate); }
//получение операции, которая определяет управляющего вагоном в указанную дату public Operation GetActiveOperationByDate(Wagon wagon, DateTime date) { //все операции по вагону срок действия которых включает указанную дату List <Operation> list = _dbContext.Operations.Where(x => x.WagonID == wagon.WagonID && x.StartDate <= date && (x.EndDate == null || x.EndDate >= date)) .ToList(); //.Where(x => x.EndDate == null || x.EndDate >= date) //.ToList(); //оставляем только последнюю операцию продажи DateTime latestSaleDate = list.Where(x => x.RentLevel == 0).Max(x => x.StartDate); list.RemoveAll(x => x.RentLevel == 0 && x.StartDate != latestSaleDate); if (list.Count == 0) { return(null); } //выбираем операцию с максимальным уровнем int maxLevel = list.Max(x => x.RentLevel); Operation activeOperation = list.First(x => x.RentLevel == maxLevel); return(activeOperation); }
public List <Operation> GetAllOperationsByWagon(Wagon wagon) { _dbContext.Operations.Where(x => x.WagonID == wagon.WagonID).Load(); return(_dbContext.Operations.Local.Where(x => x.WagonID == wagon.WagonID).ToList()); }
public List <Operation> GetNotExpiredOwnerRentsOut(Wagon wagon) { Contractor owner = GetOwner(wagon); return(_dbContext.Operations.Where(x => x.WagonID == wagon.WagonID && x.TransmitterContractorID == owner.ContractorID && x.EndDate >= DateTime.Today).ToList()); }
public List <Operation> GetNotExpiredRents(Wagon wagon) { return(_dbContext.Operations.Where(x => x.WagonID == wagon.WagonID && x.EndDate >= DateTime.Today).ToList()); }
public DateTime?GetLatestDateRentExpiresOn(Wagon wagon) { Operation rentOperation = GetListOfOperations(wagon).Where(x => GetTypeById(x.TypeID).Attribute == (int)OperationTypesAttributes.Rent).OrderByDescending(x => x.EndDate).FirstOrDefault(); return(rentOperation?.EndDate); }
//получение операции, которая определяет последнего владельца public Operation GetLastSaleOperation(Wagon wagon) { return(GetListOfOperations(wagon).Where(x => x.WagonID == wagon.WagonID && x.RentLevel == 0).OrderByDescending(x => x.StartDate).FirstOrDefault()); }
public List <Operation> GetListOfOperations(Wagon wagon) { return(_dbContext.Operations.Where(x => x.WagonID == wagon.WagonID).ToList()); }