Skip to content

Commit 9ee3301

Browse files
committed
Task: бонусные задачи в стандартном задании
1 parent d47e838 commit 9ee3301

19 files changed

Lines changed: 500 additions & 72 deletions

File tree

HwProj.Common/HwProj.Exceptions/HwProj.Exceptions.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22

33
<PropertyGroup>
4-
<TargetFramework>netcoreapp2.2</TargetFramework>
4+
<TargetFramework>netstandard2.0</TargetFramework>
55
<LangVersion>$(CSharpLanguageVersion)</LangVersion>
66
<Nullable>$(NullableReferenceTypes)</Nullable>
77
</PropertyGroup>

HwProj.Common/HwProj.Models/CoursesService/ViewModels/HomeworkTaskViewModels.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,8 @@ public class PostTaskViewModel
6565

6666
[Required] public int MaxRating { get; set; }
6767

68+
public bool IsBonusExplicit { get; set; }
69+
6870
public ActionOptions? ActionOptions { get; set; }
6971

7072
public List<CriterionViewModel> Criteria { get; set; }

HwProj.CoursesService/HwProj.CoursesService.API/Controllers/CoursesController.cs

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -100,17 +100,7 @@ public async Task<IActionResult> GetByTask(long taskId)
100100
public async Task<IActionResult> AddCourse([FromBody] CreateCourseViewModel courseViewModel)
101101
{
102102
var mentorId = Request.GetUserIdFromHeader();
103-
CourseDTO? baseCourse = null;
104-
105-
if (courseViewModel.BaseCourseId != null)
106-
{
107-
baseCourse = await _coursesService.GetForEditingAsync((long)courseViewModel.BaseCourseId);
108-
if (baseCourse == null) return NotFound();
109-
110-
if (!baseCourse.MentorIds.Contains(mentorId)) return Forbid();
111-
}
112-
113-
var courseId = await _coursesService.AddAsync(courseViewModel, baseCourse, mentorId);
103+
var courseId = await _coursesService.AddAsync(courseViewModel, mentorId);
114104

115105
return Ok(courseId);
116106
}

HwProj.CoursesService/HwProj.CoursesService.API/Dockerfile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ COPY ["Directory.Build.props", "Directory.Build.props"]
55

66
COPY ["HwProj.CoursesService/HwProj.CoursesService.API/", "HwProj.CoursesService/HwProj.CoursesService.API/"]
77
COPY ["HwProj.Common/HwProj.Utils/", "HwProj.Common/HwProj.Utils/"]
8+
COPY ["HwProj.Common/HwProj.Exceptions/", "HwProj.Common/HwProj.Exceptions/"]
89
COPY ["HwProj.EventBus/HwProj.EventBus.Client/", "HwProj.EventBus/HwProj.EventBus.Client/"]
910
COPY ["HwProj.Common/HwProj.Models/", "HwProj.Common/HwProj.Models/"]
1011
COPY ["HwProj.Common/HwProj.Repositories/", "HwProj.Common/HwProj.Repositories/"]

HwProj.CoursesService/HwProj.CoursesService.API/Domains/MappingExtensions.cs

Lines changed: 32 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -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
}

HwProj.CoursesService/HwProj.CoursesService.API/HwProj.CoursesService.API.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
<PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.10.13" />
2323
</ItemGroup>
2424
<ItemGroup>
25+
<ProjectReference Include="..\..\HwProj.Common\HwProj.Exceptions\HwProj.Exceptions.csproj" />
2526
<ProjectReference Include="..\..\HwProj.ContentService\HwProj.ContentService.Client\HwProj.ContentService.Client.csproj" />
2627
<ProjectReference Include="..\..\HwProj.AuthService\HwProj.AuthService.Client\HwProj.AuthService.Client.csproj" />
2728
<ProjectReference Include="..\..\HwProj.Common\HwProj.Repositories\HwProj.Repositories.csproj" />

0 commit comments

Comments
 (0)