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