< Summary - Syki

Information
Class: Syki.Back.Features.Academic.CreateClass.Schedule
Assembly: Back
File(s): /home/runner/work/syki/syki/Back/Features/Academic/CreateClass/Schedule.cs
Tag: 4_16869239191
Line coverage
93%
Covered lines: 41
Uncovered lines: 3
Coverable lines: 44
Total lines: 82
Line coverage: 93.1%
Branch coverage
96%
Covered branches: 31
Total branches: 32
Branch coverage: 96.8%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
get_Id()100%11100%
get_ClassId()100%210%
get_TeacherId()100%210%
get_Day()100%11100%
get_StartAt()100%11100%
get_EndAt()100%11100%
.ctor()100%11100%
.ctor(...)100%11100%
New(...)90%1010100%
GetDiff()100%11100%
Conflict(...)95.45%222292.3%
ToString()100%11100%
ToOut()100%11100%

File(s)

/home/runner/work/syki/syki/Back/Features/Academic/CreateClass/Schedule.cs

#LineLine coverage
 1namespace Syki.Back.Features.Academic.CreateClass;
 2
 3public class Schedule
 4{
 7605    public Guid Id { get; set; }
 06    public Guid? ClassId { get; set; }
 07    public Guid? TeacherId { get; set; }
 936808    public Day Day { get; set; }
 280649    public Hour StartAt { get; set; }
 2794810    public Hour EndAt { get; set; }
 11
 129612    private Schedule() {}
 13
 75814    public Schedule(
 75815        Day day,
 75816        Hour startAt,
 75817        Hour endAt
 75818    ) {
 75819        Id = Guid.CreateVersion7();
 75820        Day = day;
 75821        StartAt = startAt;
 75822        EndAt = endAt;
 75823    }
 24
 25    public static OneOf<Schedule, SykiError> New(
 26        Day day,
 27        Hour startAt,
 28        Hour endAt
 29    ) {
 62430        if (!day.IsValid()) return new InvalidDay();
 62231        if (!startAt.IsValid()) return new InvalidHour();
 62032        if (!endAt.IsValid()) return new InvalidHour();
 33
 61634        if (startAt == endAt || endAt < startAt)
 1035            return new InvalidSchedule();
 36
 60637        return new Schedule(day, startAt, endAt);
 38    }
 39
 40    public int GetDiff()
 41    {
 1310242        return StartAt.DiffInMinutes(EndAt);
 43    }
 44
 45    public bool Conflict(Schedule other)
 46    {
 6047        if (Day != other.Day)
 1448            return false;
 49
 4650        if (StartAt == other.StartAt || EndAt == other.EndAt)
 451            return true;
 52
 4253        if (StartAt < other.StartAt && other.StartAt < EndAt)
 1454            return true;
 55
 2856        if (StartAt < other.EndAt && other.EndAt < EndAt)
 257            return true;
 58
 2659        if (other.StartAt < StartAt && StartAt < other.EndAt)
 460            return true;
 61
 2262        if (other.StartAt < EndAt && EndAt < other.EndAt)
 063            return true;
 64
 2265        return false;
 66    }
 67
 68    public override string ToString()
 69    {
 10670        return $"{Day.GetDescription()} {StartAt.GetDescription()}-{EndAt.GetDescription()}";
 71    }
 72
 73    public ScheduleOut ToOut()
 74    {
 64875        return new()
 64876        {
 64877            Day = Day,
 64878            StartAt = StartAt,
 64879            EndAt = EndAt,
 64880        };
 81    }
 82}