예제 #1
0
        public async Task <IActionResult> AddNewFolder(int remoteId, [FromBody] AddFolderFormData data)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            using (var context = _contextFactory.CreateContext())
            {
                var remote = await context.BackupRemotes.FindAsync(remoteId);

                if (remote == null)
                {
                    return(NotFound());
                }

                var backupFolder = new BackupFolder(data.Path, remote)
                {
                    Name             = data.Name,
                    RemoteBaseFolder = data.RemoteFolder,
                    SyncTime         = TimeValue.Parse(data.SyncTime),
                    SyncTimeSpan     = TimeSpan.Parse(data.SyncTimeSpan)
                };

                await context.BackupFolders.AddAsync(backupFolder);

                await context.SaveChangesAsync();

                await _mediator.Publish(new FolderCreatedNotification(backupFolder));

                return(Created(Request.Path.ToString() + "/" + backupFolder.BackupFolderId, backupFolder));
            }
        }
예제 #2
0
        public async Task <IActionResult> EditBackupFolder(int remoteId, int id, [FromBody] AddFolderFormData data)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            using (var context = _contextFactory.CreateContext())
            {
                var folder = await context.BackupFolders.FindAsync(id);

                if (folder == null)
                {
                    return(NotFound());
                }
                if (folder.BackupRemoteId != remoteId)
                {
                    return(NotFound());
                }

                folder.Name             = data.Name;
                folder.RemoteBaseFolder = data.RemoteFolder;
                folder.SyncTime         = TimeValue.Parse(data.SyncTime);
                folder.SyncTimeSpan     = TimeSpan.Parse(data.SyncTimeSpan);

                await context.SaveChangesAsync();

                await _mediator.Publish(new FolderChangedNotification(folder));

                return(Created(Request.Path.ToString() + "/" + folder.BackupFolderId, folder));
            }
        }