Esempio n. 1
0
        public async Task <ServiceObjectResult <Panel> > CreatePanelAsync(Panel model)
        {
            var validationResult = await _validationService.ValidateAsync <CreatePanelValidator, Panel>(model);

            if (!validationResult.IsValid)
            {
                return(ServiceObjectResult <Panel> .Error(validationResult));
            }

            if (model.ProjectId.HasValue)
            {
                var existingProject = await _projectRepository.GetByIdAsync(model.ProjectId.Value);

                model.Project = existingProject;
            }

            if (model is MemePanel panel)
            {
                var memeImage = await _memeImageRepository.GetRandomMemes(1);

                panel.StaticMemeUrl = memeImage.Select(i => i.ImageUrl).FirstOrDefault();
            }

            var r = await _panelRepository.AddAsync(model);

            await _panelRepository.SaveAsync();

            if (model.Project != null)
            {
                BackgroundJob.Enqueue <IProjectService>(s => s.UpdateCiDataForProjectAsync(model.Project.Id));
            }

            return(ServiceObjectResult <Panel> .Ok(r));
        }
Esempio n. 2
0
        public async Task PerformRefresh()
        {
            var memePanels = (await _memePanelRepository.GetAllAsync()).ToList();
            var memeImages = (await _memeImageRepository.GetRandomMemes(memePanels.Count)).ToArray();

            if (memePanels.Count != memeImages.Length)
            {
                //There is not enough images
                return;
            }

            foreach (var o in memePanels.Select((panel, index) => new { panel, index }))
            {
                o.panel.StaticMemeUrl = memeImages[o.index].ImageUrl;
            }

            await _memePanelRepository.SaveAsync();
        }