@@ -12,11 +12,11 @@ namespace HwProj.CoursesService.API.Domains
1212 public static class MappingExtensions
1313 {
1414 private static readonly DateTime DateToOverride = DateTime . MaxValue ;
15- private static readonly StringSplitOptions splitOptions = StringSplitOptions . RemoveEmptyEntries ;
15+ private const StringSplitOptions SplitOptions = StringSplitOptions . RemoveEmptyEntries ;
1616
1717 public static HomeworkViewModel ToHomeworkViewModel ( this Homework homework )
1818 {
19- var tags = homework . Tags ? . Split ( ';' , splitOptions ) ?? Array . Empty < string > ( ) ;
19+ var tags = homework . Tags ? . Split ( ';' , SplitOptions ) ?? Array . Empty < string > ( ) ;
2020 return new HomeworkViewModel ( )
2121 {
2222 Id = homework . Id ,
@@ -38,7 +38,10 @@ public static HomeworkViewModel ToHomeworkViewModel(this Homework homework)
3838
3939 public static HomeworkTaskViewModel ToHomeworkTaskViewModel ( this HomeworkTask task )
4040 {
41- var tags = task . Homework . Tags ? . Split ( ';' , splitOptions ) ?? Array . Empty < string > ( ) ;
41+ var tags = task . Homework . Tags ? . Split ( ';' , SplitOptions ) ?? Array . Empty < string > ( ) ;
42+ if ( task . IsBonusExplicit && ! tags . Contains ( HomeworkTags . BonusTask ) )
43+ tags = tags . Union ( new [ ] { HomeworkTags . BonusTask } ) . ToArray ( ) ;
44+
4245 var evaluatedPublicationDate = task . PublicationDate ?? task . Homework . PublicationDate ;
4346 return new HomeworkTaskViewModel ( )
4447 {
@@ -57,13 +60,13 @@ public static HomeworkTaskViewModel ToHomeworkTaskViewModel(this HomeworkTask ta
5760 HomeworkId = task . HomeworkId ,
5861 Tags = tags ,
5962 Criteria = task . Criteria . Select ( c => new CriterionViewModel
60- {
61- Id = c . Id ,
62- Type = ( CriterionType ) c . Type ,
63- Name = c . Name ,
64- MaxPoints = c . MaxPoints
65- } )
66- . ToList ( ) ,
63+ {
64+ Id = c . Id ,
65+ Type = ( CriterionType ) c . Type ,
66+ Name = c . Name ,
67+ MaxPoints = c . MaxPoints
68+ } )
69+ . ToList ( ) ,
6770 } ;
6871 }
6972
@@ -83,7 +86,7 @@ public static CourseMateViewModel ToCourseMateViewModel(this CourseMate courseMa
8386 ? new StudentCharacteristicsDto ( )
8487 {
8588 Description = characteristics . Description ,
86- Tags = characteristics . Tags . Split ( ';' , splitOptions ) ,
89+ Tags = characteristics . Tags . Split ( ';' , SplitOptions ) ,
8790 }
8891 : null
8992 } ;
@@ -95,7 +98,7 @@ public static CourseDTO ToCourseDto(this Course course)
9598 Name = course . Name ,
9699 GroupName = course . GroupName ,
97100 IsCompleted = course . IsCompleted ,
98- MentorIds = course . MentorIds . Split ( '/' , splitOptions ) ,
101+ MentorIds = course . MentorIds . Split ( '/' , SplitOptions ) ,
99102 IsOpen = course . IsOpen ,
100103 InviteCode = course . InviteCode ,
101104 CourseMates = course . CourseMates . Select ( cm => cm . ToCourseMateViewModel ( ) ) . ToArray ( ) ,
@@ -109,7 +112,7 @@ public static CoursePreview ToCoursePreview(this Course course)
109112 Name = course . Name ,
110113 GroupName = course . GroupName ,
111114 IsCompleted = course . IsCompleted ,
112- MentorIds = course . MentorIds . Split ( '/' , splitOptions ) ,
115+ MentorIds = course . MentorIds . Split ( '/' , SplitOptions ) ,
113116 } ;
114117
115118 public static Criterion ToCriterion ( this CriterionViewModel criterion ) => new Criterion
@@ -130,20 +133,21 @@ public static HomeworkTask ToHomeworkTask(this PostTaskViewModel postTaskViewMod
130133 DeadlineDate = postTaskViewModel . DeadlineDate ,
131134 IsDeadlineStrict = postTaskViewModel . IsDeadlineStrict ,
132135 PublicationDate = postTaskViewModel . PublicationDate ,
136+ IsBonusExplicit = postTaskViewModel . IsBonusExplicit ,
133137 Criteria = postTaskViewModel . Criteria . Select ( x => x . ToCriterion ( ) ) . ToList ( ) ,
134138 } ;
135139
136- public static Homework ToHomework ( this CreateHomeworkViewModel createHomeworkViewModel )
140+ public static Homework ToHomework ( this CreateHomeworkViewModel homework )
137141 => new Homework ( )
138142 {
139- Title = createHomeworkViewModel . Title ,
140- Description = createHomeworkViewModel . Description ,
141- HasDeadline = createHomeworkViewModel . HasDeadline ,
142- DeadlineDate = createHomeworkViewModel . DeadlineDate ,
143- IsDeadlineStrict = createHomeworkViewModel . IsDeadlineStrict ,
144- PublicationDate = createHomeworkViewModel . PublicationDate ,
145- Tasks = createHomeworkViewModel . Tasks . Select ( t => t . ToHomeworkTask ( ) ) . ToList ( ) ,
146- Tags = createHomeworkViewModel . Tags . Join ( ";" ) ,
143+ Title = homework . Title ,
144+ Description = homework . Description ,
145+ HasDeadline = homework . HasDeadline ,
146+ DeadlineDate = homework . DeadlineDate ,
147+ IsDeadlineStrict = homework . IsDeadlineStrict ,
148+ PublicationDate = homework . PublicationDate ,
149+ Tasks = homework . Tasks . Select ( t => t . ToHomeworkTask ( ) ) . ToList ( ) ,
150+ Tags = homework . Tags . Join ( ";" ) ,
147151 } ;
148152
149153 public static CourseTemplate ToCourseTemplate ( this CreateCourseViewModel createCourseViewModel )
@@ -154,7 +158,7 @@ public static CourseTemplate ToCourseTemplate(this CreateCourseViewModel createC
154158 IsOpen = createCourseViewModel . IsOpen ,
155159 } ;
156160
157- public static CourseTemplate ToCourseTemplate ( this CourseDTO course )
161+ public static CourseTemplate ToCourseTemplate ( this Course course )
158162 => new CourseTemplate ( )
159163 {
160164 Name = course . Name ,
@@ -163,18 +167,18 @@ public static CourseTemplate ToCourseTemplate(this CourseDTO course)
163167 Homeworks = course . Homeworks . Select ( h => h . ToHomeworkTemplate ( ) ) . ToList ( ) ,
164168 } ;
165169
166- public static HomeworkTemplate ToHomeworkTemplate ( this HomeworkViewModel homework )
170+ public static HomeworkTemplate ToHomeworkTemplate ( this Homework homework )
167171 => new HomeworkTemplate ( )
168172 {
169173 Title = homework . Title ,
170174 Description = homework . Description ,
171175 HasDeadline = homework . HasDeadline ,
172176 IsDeadlineStrict = homework . IsDeadlineStrict ,
173- Tags = homework . Tags . Join ( ";" ) ,
177+ Tags = homework . Tags ,
174178 Tasks = homework . Tasks . Select ( t => t . ToHomeworkTaskTemplate ( ) ) . ToList ( ) ,
175179 } ;
176180
177- public static HomeworkTaskTemplate ToHomeworkTaskTemplate ( this HomeworkTaskViewModel task )
181+ public static HomeworkTaskTemplate ToHomeworkTaskTemplate ( this HomeworkTask task )
178182 => new HomeworkTaskTemplate ( )
179183 {
180184 Title = task . Title ,
@@ -184,6 +188,7 @@ public static HomeworkTaskTemplate ToHomeworkTaskTemplate(this HomeworkTaskViewM
184188 IsDeadlineStrict = task . IsDeadlineStrict ,
185189 HasSpecialPublicationDate = task . PublicationDate != null ,
186190 HasSpecialDeadlineDate = task . DeadlineDate != null ,
191+ IsBonusExplicit = task . IsBonusExplicit
187192 } ;
188193
189194 public static Course ToCourse ( this CourseTemplate courseTemplate )
@@ -217,6 +222,7 @@ public static HomeworkTask ToHomeworkTask(this HomeworkTaskTemplate taskTemplate
217222 HomeworkId = homeworkId ,
218223 PublicationDate = taskTemplate . HasSpecialPublicationDate ? DateToOverride : ( DateTime ? ) null ,
219224 DeadlineDate = taskTemplate . HasSpecialDeadlineDate ? DateToOverride : ( DateTime ? ) null ,
225+ IsBonusExplicit = taskTemplate . IsBonusExplicit ,
220226 } ;
221227 }
222228}
0 commit comments