< Summary - Estud

Information
Class: Estud.Back.Features.CourseCurriculums.EditCourseCurriculum.EditCourseCurriculumService
Assembly: Back
File(s): /home/runner/work/syki/syki/Back/Features/CourseCurriculums/EditCourseCurriculum/EditCourseCurriculumService.cs
Tag: 114_29044117136
Line coverage
100%
Covered lines: 25
Uncovered lines: 0
Coverable lines: 25
Total lines: 44
Line coverage: 100%
Branch coverage
100%
Covered branches: 4
Total branches: 4
Branch coverage: 100%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%11100%
.ctor()100%11100%
.cctor()100%11100%
Edit()100%66100%

File(s)

/home/runner/work/syki/syki/Back/Features/CourseCurriculums/EditCourseCurriculum/EditCourseCurriculumService.cs

#LineLine coverage
 1using Estud.Back.Domain.CourseCurriculums;
 2
 3namespace Estud.Back.Features.CourseCurriculums.EditCourseCurriculum;
 4
 145public class EditCourseCurriculumService(EstudDbContext ctx) : IEstudService
 6{
 7    private class Validator : AbstractValidator<EditCourseCurriculumIn>
 8    {
 29        public Validator()
 10        {
 211            RuleFor(x => x.Name).NotEmpty().WithError(InvalidCourseCurriculumName.I);
 212            RuleFor(x => x.Name).MaximumLength(50).WithError(InvalidCourseCurriculumName.I);
 213        }
 14    }
 215    private static readonly Validator V = new();
 16
 17    public async Task<OneOf<EstudSuccess, EstudError>> Edit(EditCourseCurriculumIn data)
 18    {
 1819        if (V.Run(data, out var error)) return error;
 20
 1021        var curriculum = await ctx.CourseCurriculums
 1022            .Include(c => c.Links)
 1023            .FirstOrDefaultAsync(c => c.InstitutionId == ctx.RequestUser.InstitutionId && c.Id == data.Id);
 1424        if (curriculum == null) return CourseCurriculumNotFound.I;
 25
 626        var courseDisciplines = await ctx.CoursesDisciplines.AsNoTracking()
 627            .Where(x => x.CourseId == curriculum.CourseId)
 628            .Select(x => x.DisciplineId)
 629            .ToListAsync();
 30
 1031        if (!data.Disciplines.ConvertAll(d => d.Id).IsSubsetOf(courseDisciplines))
 232            return new InvalidDisciplinesList();
 33
 434        curriculum.Name = data.Name;
 435        ctx.RemoveRange(curriculum.Links.ToList());
 436        curriculum.Links.Clear();
 637        var newLinks = data.Disciplines.ConvertAll(d => new CourseCurriculumDiscipline(d.Id, d.Period, d.Credits, d.Work
 438        curriculum.AddDisciplines(newLinks);
 39
 440        await ctx.SaveChangesAsync();
 41
 442        return EstudSuccess.I;
 1443    }
 44}