[HttpPost] // YOU DON'T FORGET CHANGE A METHOD IN FRONT-END, YOU SHOULD SEND PARENT-ID INSIDE BODY OF REQUEST
        public async Task <IActionResult> CreateRequirements([FromBody] RequirementCreate requirement)
        {
            try
            {
                var newRequirement = await repository.Create(requirement);

                return(Created($"/profiles/{newRequirement.Id}", newRequirement.Id));
            }
            catch (RestException ex)
            {
                return(ex.SendStatusCode());
            }
        }
        public async Task <Requirement> Create(RequirementCreate requirement)
        {
            using var transaction = await db.Database.BeginTransactionAsync();

            try
            {
                var parentRequirement = await db.Requirements.FirstOrDefaultAsync(r => r.Id == requirement.ParentId);

                if (parentRequirement == null)
                {
                    throw new NotFoundException("Requirement not found");
                }

                string profile = null;

                if (IsGroup(parentRequirement))
                {
                    profile = parentRequirement.Profile;
                    parentRequirement.Profile = null;
                    db.Requirements.Update(parentRequirement);
                    await db.SaveChangesAsync();
                }
                else
                {
                    profile = await File.ReadAllTextAsync(Directory.GetCurrentDirectory() + "/Json/profile.json");

                    var project = GetRoot(parentRequirement);

                    var json = JsonConvert.DeserializeObject <List <Models.Profile.Profile> >(project.Profile);

                    var profileRepository = new ProfileRepository(json).AddCoeffToI8();

                    string updateProfile = JsonConvert.SerializeObject(profileRepository);

                    project.Profile = updateProfile;

                    db.Requirements.Update(project);
                    await db.SaveChangesAsync();
                }

                var newRequirement = new Requirement()
                {
                    Name    = requirement.Name,
                    Parent  = parentRequirement,
                    Profile = profile
                };

                await db.Requirements.AddAsync(newRequirement);

                await db.SaveChangesAsync();

                await transaction.CommitAsync();

                return(newRequirement);
            }
            catch (Exception ex)
            {
                await transaction.RollbackAsync();

                throw new ServerErrorException(ex.Message);
            }
        }