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"));
        }