public ImportVehiclesForSiteResultDto(ImportVehiclesForSiteResult entity)
 {
     Status   = entity.Status.ToString();
     Message  = entity.Message;
     SiteId   = entity.SiteId;
     SiteName = entity.SiteName;
     ProcessedVehiclesCount     = entity.ProcessedVehiclesCount;
     ProcessedNewVehiclesCount  = entity.ProcessedNewVehiclesCount;
     ProcessedUsedVehiclesCount = entity.ProcessedUsedVehiclesCount;
 }
示例#2
0
        public virtual async Task <ImportVehiclesForSiteResult> ImportVehiclesAsync(int id)
        {
            Site site = await Repository.GetAsync(id);

            ((ISitePolicy)Policy).PolicyImportVehicles(site);
            ImportVehiclesForSiteResult importResult = (await VehiclesImportService.Import(site)).First();

            if (importResult.Status == Vehicles.Import.Enums.ImportStatusEnum.Success)
            {
                site.NewVehiclesCount  = importResult.ProcessedNewVehiclesCount;
                site.UsedVehiclesCount = importResult.ProcessedUsedVehiclesCount;
            }
            return(importResult);
        }
示例#3
0
        protected virtual async Task <ImportVehiclesForSiteResult> InternalImportForSiteAsync(Site site, IFtpClient ftpClient)
        {
            ImportVehiclesForSiteResult importResult;

            try
            {
                if (site.ImportRelativeFtpPath != null)
                {
                    if (ftpClient.DirectoryExists(site.ImportRelativeFtpPath))
                    {
                        FtpListItem lastModifiedFileInfo = (await ftpClient.GetListingAsync(site.ImportRelativeFtpPath, FtpListOption.Auto))
                                                           .Where(r => r.Type == FtpFileSystemObjectType.File)
                                                           .OrderByDescending(r => r.Modified)
                                                           .FirstOrDefault();
                        if (lastModifiedFileInfo != null)
                        {
                            IEnumerable <Vehicle> vehicles;
                            using (var csvFileStream = new MemoryStream(await ftpClient.DownloadAsync(lastModifiedFileInfo.FullName)))
                            {
                                vehicles = VehicleBulkFactory.Create(new VehicleFromCsvFileBulkFactorySettings(site.Id, csvFileStream));
                            }
                            await VehicleRepository.RefreshEntitiesForSiteAsync(site.Id, vehicles);

                            importResult = new ImportVehiclesForSiteResult(
                                site.Id, site.Name, vehicles.Count(),
                                vehicles.Count(r => r.Condition == VehicleConditions.New),
                                vehicles.Count(r => r.Condition == VehicleConditions.Used));
                        }
                        else
                        {
                            importResult = new ImportVehiclesForSiteResult(site.Id, site.Name, $"No files in specified folder ({site.ImportRelativeFtpPath}).", ImportStatusEnum.NotStarted);
                        }
                    }
                    else
                    {
                        importResult = new ImportVehiclesForSiteResult(site.Id, site.Name, $"The specified folder ({site.ImportRelativeFtpPath}) was not found.", ImportStatusEnum.NotStarted);
                    }
                }
                else
                {
                    importResult = new ImportVehiclesForSiteResult(site.Id, site.Name, $"The specified folder is not defined.", ImportStatusEnum.NotStarted);
                }
            }
            catch (Exception ex)
            {
                importResult = new ImportVehiclesForSiteResult(site.Id, site.Name, ex.Message, ImportStatusEnum.Failed);
            }
            return(importResult);
        }