public async Task <IActionResult> PostWithImage(ItemEditRequest request) { //http://damienbod.com/2015/12/05/asp-net-5-mvc-6-file-upload-with-ms-sql-server-filetable/ Item item; if (request.Id == null) { item = new Item(); _dbContext.Items.Add(item); } else { item = await _dbContext .Items .FirstOrDefaultAsync(x => x.Id == request.Id); } if (item == null) { return(HttpNotFound()); } item.Name = request.Name; item.FunnyName = request.FunnyName; item.ParentId = request.ParentId; // read stream var file = request.ImageFile; if (file != null) { var fileBytes = new byte[file.Length]; await file.OpenReadStream().ReadAsync(fileBytes, 0, (int)file.Length); // get file name var parsedContentDisposition = ContentDispositionHeaderValue.Parse(file.ContentDisposition); var fileName = parsedContentDisposition.FileName; // drop existing file so new file has new id this is important so the url changes and the // new image is shown in the UI. if (item.File != null) { _dbContext.Files.Remove(item.File); } item.File = new File { Content = fileBytes, ContentType = request.ImageFile.ContentType, Name = fileName, FileType = FileType.Thumbnail }; } await _dbContext.SaveChangesAsync(); return(Ok(item.ToNodeModel())); }
public async Task <IActionResult> Post([FromBody] int itemPresetId) { var logPresetDetails = await _dbContext .LogPresetDetails .Where(x => x.ItemPresetId == itemPresetId) .ToListAsync(); if (!logPresetDetails.Any()) { return(HttpNotFound("preset does not exist")); } // group presets by group and item id var groups = logPresetDetails .GroupBy(x => new { x.LogGroup, x.ItemId }) .ToList(); foreach (var @group in groups) { var itemId = @group.Key.ItemId; var log = new Log { ItemId = itemId, UserId = 1, Logged = DateTime.UtcNow, CreateDate = DateTime.UtcNow }; foreach (var logPresetDetail in @group) { var controlLog = new ControlLog { ControlId = logPresetDetail.ControlId, ControlOptionId = logPresetDetail.ControlOptionId, Value = logPresetDetail.Value }; _dbContext.ControlLogs.Add(controlLog); log.ControlLogs.Add(controlLog); } _dbContext.Logs.Add(log); } await _dbContext.SaveChangesAsync(); return(Ok()); }