public async Task <IActionResult> PostMaterialAsync(CreateMaterialDTO model, IFormFile formFile) { var materialPath = $"{_filesPath}{model.Name}\\"; var unique = _context.Materials.FirstOrDefault(m => m.Name == model.Name) == null; if (ModelState.IsValid) { if (!unique) { return(BadRequest($"Material with name {model.Name} already exists")); } if ((int)model.Category > 3 || (int)model.Category < 1) { return(BadRequest("Invalid category")); } if (formFile.Length > 2147483647) { return(BadRequest("File is too large")); } Directory.CreateDirectory(materialPath); using (var fileStream = new FileStream($"{materialPath}{model.Name}_1", FileMode.Create)) { await formFile.CopyToAsync(fileStream); } var material = new Material() { Name = model.Name, Category = model.Category }; _context.Materials.Add(material); var version = new Models.Version() { Material = material, UploadDate = DateTime.Now, Release = 1, Size = formFile.Length, Path = $"{materialPath}{material.Name}_1" }; _context.Versions.Add(version); await _context.SaveChangesAsync(); return(CreatedAtAction("GetMaterial", new { id = material.Id }, material)); } return(BadRequest("Invalid model")); }
public async Task <ActionResult <Material> > PostBase64Material(CreateMaterialDTO model) { var materialPath = $"{_filesPath}{model.Name}\\"; var unique = _context.Materials.FirstOrDefault(m => m.Name == model.Name) == null; if (ModelState.IsValid) { if (!unique) { return(BadRequest($"Material with name {model.Name} already exists")); } if ((int)model.Category > 3 || (int)model.Category < 1) { return(BadRequest("Invalid category")); } Directory.CreateDirectory(materialPath); System.IO.File.WriteAllBytes($"{materialPath}{model.Name}_1", model.File); var material = new Material() { Name = model.Name, Category = model.Category }; _context.Materials.Add(material); var version = new Models.Version() { Material = material, UploadDate = DateTime.Now, Release = 1, Size = model.File.Length, Path = $"{materialPath}{material.Name}_1" }; _context.Versions.Add(version); await _context.SaveChangesAsync(); return(CreatedAtAction("GetMaterial", new { id = material.Id }, material)); } return(BadRequest("Invalid model")); }