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)); }