示例#1
0
        /// <summary>
        /// Обработка события завершения парсинга
        /// </summary>
        /// <param name="obj"></param>
        private void Worker_OnParsingCompleted(SiteWorker obj)
        {
            bImport.Enabled = true;
            bExport.Enabled = true;
            bAll.Enabled    = true;
            bCancel.Enabled = false;

            Log(@"Парсинг товаров завершён");
        }
        private Action <SiteProfile> actionSaveProfile; // callback action

        public CurlPlayVModel(SiteProfile siteProfile, Action <SiteProfile> actionSaveProfile)
        {
            Profile        = siteProfile;
            Progress       = new ProgressInfo(0, false);
            WindowProgress = 0;

            IsNotRunning  = true;
            IsRandomDelay = Profile.DelayMax > Profile.DelayMin;

            DelaySetting = IsRandomDelay ? $"{Profile.DelayMin} - {Profile.DelayMax}" : Profile.DelayMin.ToString();
            ResponseList = new ObservableCollection <CurlResponse>();

            siteWorker             = new SiteWorker(OnStateUpdated, OnSiteResponse);
            this.actionSaveProfile = actionSaveProfile;
        }
        public async Task <OperationDataResult <DeviceUser> > Edit(int id)
        {
            var core = await _coreHelper.GetCore();

            await using var db = core.DbContextHelper.GetDbContext();

            //var siteDto = await core.SiteRead(id);
            DeviceUser deviceUser = null;
            Site       site       = await db.Sites.SingleOrDefaultAsync(x => x.MicrotingUid == id);

            if (site == null)
            {
                return(null);
            }

            SiteWorker siteWorker = db.SiteWorkers.Where(x => x.SiteId == site.Id).ToList().First();
            Worker     worker     = await db.Workers.SingleAsync(x => x.Id == siteWorker.WorkerId);

            List <Unit> units = db.Units.Where(x => x.SiteId == site.Id).ToList();

            if (units.Any() && worker != null)
            {
                Unit     unit     = units.First();
                Language language = db.Languages.Single(x => x.Id == site.LanguageId);
                deviceUser = new DeviceUser()
                {
                    CustomerNo   = unit.CustomerNo,
                    FirstName    = worker.FirstName,
                    Language     = language.Name,
                    LanguageCode = language.LanguageCode,
                    LanguageId   = site.LanguageId,
                    LastName     = worker.LastName,
                    OtpCode      = unit.OtpCode,
                    SiteId       = site.Id,
                    SiteName     = site.Name,
                    SiteUid      = site.MicrotingUid,
                    UnitId       = unit.Id,
                    UnitUid      = unit.MicrotingUid
                };
                //return new SiteDto((int)site.MicrotingUid, site.Name, worker.FirstName, worker.LastName, (int)unit.CustomerNo, unit.OtpCode ?? 0, (int)unit.MicrotingUid, worker.MicrotingUid);
            }

            return(deviceUser != null
                ? new OperationDataResult <DeviceUser>(true, deviceUser)
                : new OperationDataResult <DeviceUser>(false,
                                                       _localizationService.GetStringWithFormat("DeviceUserParamCouldNotBeEdited", id)));
        }
        public async Task <OperationDataResult <List <DeviceUser> > > Index()
        {
            var core = await _coreHelper.GetCore();

            await using MicrotingDbContext db = core.DbContextHelper.GetDbContext();
            List <DeviceUser> deviceUsers = new List <DeviceUser>();

            List <Site> matches = await db.Sites.Where(x => x.WorkflowState != Constants.WorkflowStates.Removed).ToListAsync().ConfigureAwait(false);

            foreach (Site aSite in matches)
            {
                Unit   unit               = null;
                Worker worker             = null;
                int?   unitCustomerNo     = null;
                int?   unitOptCode        = null;
                int?   unitMicrotingUid   = null;
                int?   workerMicrotingUid = null;
                string workerFirstName    = null;
                string workerLastName     = null;
                try
                {
                    unit = await db.Units.FirstAsync(x => x.SiteId == aSite.Id);

                    unitCustomerNo   = unit.CustomerNo;
                    unitOptCode      = unit.OtpCode ?? 0;
                    unitMicrotingUid = (int)unit.MicrotingUid;
                }
                catch
                {
                }

                try
                {
                    SiteWorker siteWorker = await db.SiteWorkers.FirstAsync(x => x.SiteId == aSite.Id);

                    worker = await db.Workers.SingleAsync(x => x.Id == siteWorker.WorkerId);

                    workerMicrotingUid = worker.MicrotingUid;
                    workerFirstName    = worker.FirstName;
                    workerLastName     = worker.LastName;
                }
                catch
                {
                }

                if (aSite.LanguageId == 0)
                {
                    aSite.LanguageId = db.Languages.Single(x => x.Name == "Danish").Id;
                    await aSite.Update(db);
                }

                Language   language   = db.Languages.Single(x => x.Id == aSite.LanguageId);
                DeviceUser deviceUser = new DeviceUser()
                {
                    CustomerNo   = unitCustomerNo,
                    FirstName    = workerFirstName,
                    LastName     = workerLastName,
                    LanguageId   = aSite.LanguageId,
                    OtpCode      = unitOptCode,
                    SiteId       = aSite.Id,
                    SiteUid      = aSite.MicrotingUid,
                    SiteName     = aSite.Name,
                    UnitId       = unitMicrotingUid,
                    WorkerUid    = workerMicrotingUid,
                    Language     = language.Name,
                    LanguageCode = language.LanguageCode,
                };
                deviceUsers.Add(deviceUser);
            }

            // var siteDto = await core.SiteReadAll(false);
            return(new OperationDataResult <List <DeviceUser> >(true, deviceUsers));
        }