public ActiveCarFinderResult AllowCreateCar(string carId, DateTime?dateBegin, DateTime?dateEnd) { MAIN_BASE car = this.db.MAIN_BASE.Find(carId); if (!this.PartnerIds.Value.Contains(car.PartnerId)) { return(new ActiveCarFinderResult(true)); } var cars = this.db.MAIN_BASE.AsQueryable(); cars = this.filterByPartner(car, cars); cars = this.filterByDate(car, cars, dateBegin, dateEnd); cars = this.filterByStatus(car, cars); string carName = car.Cars.Name; string carViewName = car.Cars.ViewName; if (carViewName.StartsWith("Volksvagen", StringComparison.OrdinalIgnoreCase) || carViewName.Equals("BMW", StringComparison.OrdinalIgnoreCase)) { if (cars.Where(x => x.Id != carId).Count() > 2) { return(new ActiveCarFinderResult(false, $"Машин больше 3ех {carViewName}. в базе")); } } else if (carViewName.Equals("Tayota", StringComparison.OrdinalIgnoreCase)) { var pers = car.MAIN_BASEPersons.Single(person => person.PersonType == true); string inn = (pers.INN ?? "").Replace(" ", "").Trim(); if (string.Equals(pers.Category, "Юр. лицо", StringComparison.OrdinalIgnoreCase)) { cars = cars.Where(pol => pol.MAIN_BASEPersons.Any(per => per.PersonType == true && (per.INN ?? "").Replace(" ", "").Trim() == inn)); } else { string lastName = (pers.LastName ?? "").Replace(" ", "").Trim(); string firstName = (pers.FirstName ?? "").Replace(" ", "").Trim(); string middleName = (pers.MiddleName ?? "").Replace(" ", "").Trim(); cars = cars.Where(pol => pol.MAIN_BASEPersons.Any(per => per.PersonType == true && (per.LastName ?? "").Replace(" ", "").Trim() == lastName && (per.FirstName ?? "").Replace(" ", "").Trim() == firstName && (per.MiddleName ?? "").Replace(" ", "").Trim() == middleName && per.DateBorn == pers.DateBorn)); } var existedPersCount = cars.SelectMany(A => A.MAIN_BASEPersons.Where(B => B.PersonType == false)).Count(); var addedPersCount = car.MAIN_BASEPersons.Where(per => per.PersonType == false).Count(); if (existedPersCount + addedPersCount > 100) { return(new ActiveCarFinderResult(false, $"У указанного человека {existedPersCount} есть авто {carViewName}")); } } return(new ActiveCarFinderResult(true)); }
private IQueryable <MAIN_BASE> filterByDate(MAIN_BASE car, IQueryable <MAIN_BASE> cars, DateTime?dateBegin, DateTime?dateEnd) { if (car.DateBegin.HasValue && car.DateEnd.HasValue) { return(cars.Where(A => (car.DateBegin <= A.DateEnd && car.DateEnd >= A.DateBegin))); } else { return(cars.Where(A => (dateBegin <= A.DateEnd && dateEnd >= A.DateBegin))); } }
public GetResultOutput GetResult(MAIN_BASE item, INTEGRATION rowToExport) { var xml = rowToExport.RequestXml.DeserializeXmlTo <Box>(); var result = new GetResultOutput(); var partner = item.Partners; var product = item.Products; if (rowToExport.StatusExport == (int)StatusExportEnum.Ready) { using (var client = new Contract() { Timeout = 40000 }) { try { result.ResultAdd = client.AddBox(xml, false); result.ResultStatus = result.ResultAdd.Status == CreatedStatus.ok ? StatusExportEnum.Exported : StatusExportEnum.Ready; } catch (Exception exception) { result.ResultAdd = new ResolveCreateStatus(); result.ResultAdd.Errors = new Errors[] { new Errors() { Error = "ошибка AddBox", Value = exception.ToString() } }; result.ResultStatus = StatusExportEnum.Ready; return(result); } }; } if (partner.ViewName == "VolkSvagen" || partner.ViewName == "BMW") { if (rowToExport.StatusExport == (int)StatusExportEnum.Response || result.ResultAdd.Status == CreatedStatus.ok) { result.Result = new Contract().Cars(result.ResultAdd.id); result.ResultStatus = result.ResultCars.Status == true ? StatusExportEnum.Exported : StatusExportEnum.RegPolicyResponse; } } return(result); }
private IQueryable <MAIN_BASE> filterObjectAddress(MAIN_BASE sourceCar, IQueryable <MAIN_BASE> cars) { var hashes = sourceCar .MAIN_BASEAddress .Where(address => address.TypeAddress == null && address.TypeRegister == true && !string.IsNullOrEmpty(address.TypeObject) ) .Select(address => address.Md5) .ToArray(); return(cars.Where(car => car.MAIN_BASEAddress.Any( address => address.TypeAddress == null && address.TypeRegister == true && !string.IsNullOrEmpty(address.TypeObject) && hashes.Contains(address.Md5) ))); }
private IQueryable <MAIN_BASE> filterByCar(MAIN_BASE car, IQueryable <MAIN_BASE> cars) { return(cars.Where(A => A.Cars.ViewName == car.Auto.ViewName)); }
private IQueryable <MAIN_BASE> filterByStatus(MAIN_BASE car, IQueryable <MAIN_BASE> cars) { return(cars.Where(A => A.Status == CarStateModel.ReleasedState.Name || A.Status == CarStateModel.Track)); }
private IQueryable <MAIN_BASE> filterByPartner(MAIN_BASE car, IQueryable <MAIN_BASE> cars) { string[] PartnerIds = this.PartnerIds.Value; return(cars.Where(A => PartnerIds.Contains(A.PartnerId))); }