public async Task <CoordinationResponse> UpdateAsync(int id, Coordination coordination)
        {
            var existingCoordination = await _coordinationRepository.FindByIdAsync(id);

            if (existingCoordination == null)
            {
                return(new CoordinationResponse("Coordination not found."));
            }

            try
            {
                (Boolean success, String error)check = await idChecks(coordination);

                if (!check.success)
                {
                    return(new CoordinationResponse(check.error));
                }
                // Set last updated to current time
                existingCoordination.DateLastUpdated = DateTime.Now;

                // Update attributes
                existingCoordination.Title             = coordination.Title;
                existingCoordination.Description       = coordination.Description;
                existingCoordination.PublisherId       = coordination.PublisherId;
                existingCoordination.UnderCoordination = coordination.UnderCoordination;
                existingCoordination.StatusDescription = coordination.StatusDescription;
                existingCoordination.CategoryId        = coordination.CategoryId;
                existingCoordination.TagsIds           = coordination.TagsIds;
                existingCoordination.AccessLevel       = coordination.AccessLevel;

                existingCoordination.CoordinationTags.Clear();
                await addTags(existingCoordination);

                _coordinationRepository.Update(existingCoordination);

                // Send notifications
                await _notificationService.AddUserNotificationsAsync(existingCoordination, existingCoordination, existingCoordination.Title + " - " + existingCoordination.Publisher.Name, "Samordningen '" + existingCoordination.Title + "' har blitt oppdatert.");

                await _notificationService.AddPublisherNotificationsAsync(existingCoordination, existingCoordination, existingCoordination.Title + " - " + existingCoordination.Publisher.Name, "Samordningen din '" + existingCoordination.Title + "' har blitt oppdatert.");

                await _unitOfWork.CompleteAsync();

                if (coordination.GitlabProjectId == null)
                {
                    var createCoordinationTask = Task.Run(() => {
                        return(existingCoordination);
                    });
                    await CreateGitLabProject(createCoordinationTask, existingCoordination);
                }
                await _gitlabService.UpdateProject(existingCoordination);

                return(new CoordinationResponse(existingCoordination));
            }
            catch (Exception ex)
            {
                // Do some logging stuff
                return(new CoordinationResponse($"An error occurred when updating the coordination: {ex.Message}"));
            }
        }
Exemplo n.º 2
0
        public async Task <DatasetResponse> UpdateAsync(int id, Dataset dataset)
        {
            var existingDataset = await _datasetRepository.FindByIdAsync(id);

            if (existingDataset == null)
            {
                return(new DatasetResponse("Dataset not found."));
            }

            try
            {
                (Boolean success, String error)check = await idChecks(dataset);

                if (!check.success)
                {
                    return(new DatasetResponse(check.error));
                }
                // Set last updated to current time
                existingDataset.DateLastUpdated = DateTime.Now;

                // Update attributes
                existingDataset.Title                = dataset.Title;
                existingDataset.Description          = dataset.Description;
                existingDataset.PublisherId          = dataset.PublisherId;
                existingDataset.PublicationStatus    = dataset.PublicationStatus;
                existingDataset.DatePlannedPublished = dataset.DatePlannedPublished;
                existingDataset.AccessLevel          = dataset.AccessLevel;
                existingDataset.TagsIds              = dataset.TagsIds;
                existingDataset.CategoryId           = dataset.CategoryId;
                existingDataset.CoordinationId       = dataset.CoordinationId;
                existingDataset.InterestCounter      = dataset.InterestCounter;

                existingDataset.DatasetTags.Clear();
                await addTags(existingDataset);

                _datasetRepository.Update(existingDataset);

                // Send notifications
                await _notificationService.AddUserNotificationsAsync(existingDataset, existingDataset, existingDataset.Title + " - " + existingDataset.Publisher.Name, "Datasettet '" + existingDataset.Title + "' har blitt oppdatert.");

                await _notificationService.AddPublisherNotificationsAsync(existingDataset, existingDataset, existingDataset.Title + " - " + existingDataset.Publisher.Name, "Datasettet ditt '" + existingDataset.Title + "' har blitt oppdatert.");

                await _unitOfWork.CompleteAsync();

                if (dataset.GitlabProjectId == null)
                {
                    var createDatasetTask = Task.Run(() => {
                        return(existingDataset);
                    });
                    await CreateGitLabProject(createDatasetTask, existingDataset);
                }
                await _gitlabService.UpdateProject(existingDataset);

                return(new DatasetResponse(existingDataset));
            }
            catch (Exception ex)
            {
                // Do some logging stuff
                return(new DatasetResponse($"An error occurred when updating the dataset: {ex.Message}"));
            }
        }