Revize 1a65a2c2
Přidáno uživatelem Vojtěch Bartička před téměř 3 roky(ů)
Backend/Backend/Controllers/TagController.cs | ||
---|---|---|
148 | 148 |
|
149 | 149 |
return Ok(); |
150 | 150 |
} |
151 |
|
|
152 |
[HttpPost("/subtags")] |
|
153 |
[Authorize(Models.Enums.ERole.ADMINISTRATOR)] |
|
154 |
[ProducesResponseType((int)HttpStatusCode.OK)] |
|
155 |
[ProducesResponseType((int)HttpStatusCode.Forbidden)] |
|
156 |
public ActionResult CreateSubTag([FromBody] CreateSubTagRequest request) |
|
157 |
{ |
|
158 |
try |
|
159 |
{ |
|
160 |
tagService.CreateSubTag(request); |
|
161 |
} |
|
162 |
catch (InvalidOperationException e) |
|
163 |
{ |
|
164 |
throw new BadRequestException(e.Message); |
|
165 |
} |
|
166 |
|
|
167 |
return Ok(); |
|
168 |
} |
|
169 |
|
|
170 |
[HttpDelete("/subtag/{subtagId}")] |
|
171 |
[Authorize(Models.Enums.ERole.ADMINISTRATOR)] |
|
172 |
[ProducesResponseType((int)HttpStatusCode.OK)] |
|
173 |
[ProducesResponseType((int)HttpStatusCode.Forbidden)] |
|
174 |
public ActionResult DeleteSubTag(Guid subtagId) |
|
175 |
{ |
|
176 |
try |
|
177 |
{ |
|
178 |
tagService.DeleteSubTag(subtagId); |
|
179 |
} |
|
180 |
catch (InvalidOperationException e) |
|
181 |
{ |
|
182 |
throw new BadRequestException(e.Message); |
|
183 |
} |
|
184 |
|
|
185 |
return Ok(); |
|
186 |
} |
|
187 |
|
|
188 |
[HttpPut("/subtag/{subtagId}")] |
|
189 |
[Authorize(Models.Enums.ERole.ADMINISTRATOR)] |
|
190 |
[ProducesResponseType((int)HttpStatusCode.OK)] |
|
191 |
[ProducesResponseType((int)HttpStatusCode.Forbidden)] |
|
192 |
public ActionResult UpdateSubTag([FromBody] ModifySubTagRequest request, Guid subtagId) |
|
193 |
{ |
|
194 |
try |
|
195 |
{ |
|
196 |
tagService.UpdateSubTag(request, subtagId); |
|
197 |
} |
|
198 |
catch (InvalidOperationException e) |
|
199 |
{ |
|
200 |
throw new BadRequestException(e.Message); |
|
201 |
} |
|
202 |
|
|
203 |
return Ok(); |
|
204 |
} |
|
151 | 205 |
} |
152 | 206 |
|
Backend/Core/Services/TagService/ITagService.cs | ||
---|---|---|
16 | 16 |
public void CreateTag(CreateTagRequest request); |
17 | 17 |
public void DeleteTag(Guid tagId); |
18 | 18 |
public void UpdateTag(ModifyTagRequest request, Guid tagId); |
19 |
//public void CreateSubTag();
|
|
20 |
//public void DeleteSubTag();
|
|
21 |
//public void UpdateSubTag();
|
|
19 |
public void CreateSubTag(CreateSubTagRequest request);
|
|
20 |
public void DeleteSubTag(Guid subtagId);
|
|
21 |
public void UpdateSubTag(ModifySubTagRequest request, Guid subtagId);
|
|
22 | 22 |
} |
23 | 23 |
} |
Backend/Core/Services/TagService/TagServiceEF.cs | ||
---|---|---|
71 | 71 |
throw new InvalidOperationException("Category name or color empty"); |
72 | 72 |
} |
73 | 73 |
|
74 |
CategoryNameUnusedOrThrow(request.Name);
|
|
74 |
CategoryNameUnusedElseThrow(request.Name);
|
|
75 | 75 |
|
76 | 76 |
databaseContext.TagCategories.Add(new Entities.TagCategory() |
77 | 77 |
{ |
... | ... | |
85 | 85 |
|
86 | 86 |
public void DeleteCategory(Guid categoryId) |
87 | 87 |
{ |
88 |
CategoryExistsOrThrow(categoryId);
|
|
88 |
CategoryExistsElseThrow(categoryId);
|
|
89 | 89 |
|
90 | 90 |
var category = databaseContext.TagCategories.First(tc => tc.Id == categoryId); |
91 | 91 |
databaseContext.TagCategories.Remove(category); |
... | ... | |
94 | 94 |
|
95 | 95 |
public void UpdateCategory(ModifyCategoryRequest request, Guid categoryId) |
96 | 96 |
{ |
97 |
CategoryExistsOrThrow(categoryId);
|
|
97 |
CategoryExistsElseThrow(categoryId);
|
|
98 | 98 |
var category = databaseContext.TagCategories.First(tc => tc.Id == categoryId); |
99 | 99 |
|
100 | 100 |
if (request.Name != null) |
101 | 101 |
{ |
102 |
CategoryNameUnusedOrThrow(request.Name);
|
|
102 |
CategoryNameUnusedElseThrow(request.Name);
|
|
103 | 103 |
category.Name = request.Name; |
104 | 104 |
} |
105 | 105 |
|
... | ... | |
122 | 122 |
|
123 | 123 |
public void CreateTag(CreateTagRequest request) |
124 | 124 |
{ |
125 |
CategoryExistsOrThrow(request.CategoryId);
|
|
125 |
CategoryExistsElseThrow(request.CategoryId);
|
|
126 | 126 |
|
127 |
TagNameUnusedOrThrow(request.Name);
|
|
127 |
TagNameUnusedElseThrow(request.Name);
|
|
128 | 128 |
|
129 | 129 |
if (request.Color == "") |
130 | 130 |
{ |
... | ... | |
146 | 146 |
|
147 | 147 |
public void DeleteTag(Guid tagId) |
148 | 148 |
{ |
149 |
TagExistsOrThrow(tagId);
|
|
149 |
TagExistsElseThrow(tagId);
|
|
150 | 150 |
var tag = databaseContext.Tags.First(t => t.Id == tagId); |
151 | 151 |
databaseContext.Tags.Remove(tag); |
152 |
databaseContext.SaveChanges(); |
|
152 | 153 |
} |
153 | 154 |
|
154 | 155 |
public void UpdateTag(ModifyTagRequest request, Guid tagId) |
155 | 156 |
{ |
156 |
TagExistsOrThrow(tagId);
|
|
157 |
TagExistsElseThrow(tagId);
|
|
157 | 158 |
var tag = databaseContext.Tags.First(t => t.Id == tagId); |
158 | 159 |
|
159 | 160 |
if (request.Name != null) |
160 | 161 |
{ |
161 |
TagNameUnusedOrThrow(request.Name);
|
|
162 |
TagNameUnusedElseThrow(request.Name);
|
|
162 | 163 |
tag.Name = request.Name; |
163 | 164 |
} |
164 | 165 |
|
... | ... | |
179 | 180 |
databaseContext.SaveChanges(); |
180 | 181 |
} |
181 | 182 |
|
183 |
public void CreateSubTag(CreateSubTagRequest request) |
|
184 |
{ |
|
185 |
if (request.Name == "") |
|
186 |
{ |
|
187 |
throw new InvalidOperationException("Subtag name empty"); |
|
188 |
} |
|
182 | 189 |
|
190 |
SubTagNameUnusedElseThrow(request.Name); |
|
191 |
|
|
192 |
TagExistsElseThrow(request.TagId); |
|
193 |
var tag = databaseContext.Tags.First(t => t.Id == request.TagId); |
|
183 | 194 |
|
195 |
databaseContext.SubTags.Add(new Entities.SubTag() |
|
196 |
{ |
|
197 |
Name = request.Name, |
|
198 |
Description = request.Description, |
|
199 |
Tag = tag |
|
200 |
}); |
|
184 | 201 |
|
202 |
databaseContext.SaveChanges(); |
|
203 |
} |
|
185 | 204 |
|
205 |
public void DeleteSubTag(Guid subtagId) |
|
206 |
{ |
|
207 |
SubTagExistsElseThrow(subtagId); |
|
208 |
var subtag = databaseContext.SubTags.First(st => st.Id == subtagId); |
|
209 |
databaseContext.SubTags.Remove(subtag); |
|
210 |
databaseContext.SaveChanges(); |
|
211 |
} |
|
186 | 212 |
|
187 |
private void CategoryExistsOrThrow(Guid categoryId) |
|
213 |
public void UpdateSubTag(ModifySubTagRequest request, Guid subtagId) |
|
214 |
{ |
|
215 |
SubTagExistsElseThrow(subtagId); |
|
216 |
var subtag = databaseContext.SubTags.First(st => st.Id == subtagId); |
|
217 |
|
|
218 |
if (request.Name != null) |
|
219 |
{ |
|
220 |
SubTagNameUnusedElseThrow(request.Name); |
|
221 |
subtag.Name = request.Name; |
|
222 |
} |
|
223 |
|
|
224 |
if (request.Description != null) |
|
225 |
{ |
|
226 |
subtag.Description = request.Description; |
|
227 |
} |
|
228 |
|
|
229 |
databaseContext.SaveChanges(); |
|
230 |
} |
|
231 |
|
|
232 |
|
|
233 |
|
|
234 |
|
|
235 |
|
|
236 |
private void CategoryExistsElseThrow(Guid categoryId) |
|
188 | 237 |
{ |
189 | 238 |
if (!databaseContext.TagCategories.Any(tc => tc.Id == categoryId)) |
190 | 239 |
{ |
... | ... | |
192 | 241 |
} |
193 | 242 |
} |
194 | 243 |
|
195 |
private void CategoryNameUnusedOrThrow(string name)
|
|
244 |
private void CategoryNameUnusedElseThrow(string name)
|
|
196 | 245 |
{ |
197 | 246 |
if (databaseContext.TagCategories.Any(tc => tc.Name == name)) |
198 | 247 |
{ |
... | ... | |
200 | 249 |
} |
201 | 250 |
} |
202 | 251 |
|
203 |
private void TagExistsOrThrow(Guid tagId)
|
|
252 |
private void TagExistsElseThrow(Guid tagId)
|
|
204 | 253 |
{ |
205 | 254 |
if (!databaseContext.Tags.Any(t => t.Id == tagId)) |
206 | 255 |
{ |
... | ... | |
208 | 257 |
} |
209 | 258 |
} |
210 | 259 |
|
211 |
private void TagNameUnusedOrThrow(string name)
|
|
260 |
private void TagNameUnusedElseThrow(string name)
|
|
212 | 261 |
{ |
213 | 262 |
if (databaseContext.Tags.Any(t => t.Name == name)) |
214 | 263 |
{ |
215 | 264 |
throw new InvalidOperationException("Tag name already used"); |
216 | 265 |
} |
217 | 266 |
} |
267 |
|
|
268 |
private void SubTagExistsElseThrow(Guid subtagId) |
|
269 |
{ |
|
270 |
if (!databaseContext.SubTags.Any(st => st.Id == subtagId)) |
|
271 |
{ |
|
272 |
throw new InvalidOperationException("Subtag does not exist"); |
|
273 |
} |
|
274 |
} |
|
275 |
|
|
276 |
private void SubTagNameUnusedElseThrow(string name) |
|
277 |
{ |
|
278 |
if (databaseContext.SubTags.Any(st => st.Name == name)) |
|
279 |
{ |
|
280 |
throw new InvalidOperationException("Subtag name already used"); |
|
281 |
} |
|
282 |
} |
|
218 | 283 |
} |
219 | 284 |
} |
Backend/Models/Tags/CreateSubTagRequest.cs | ||
---|---|---|
1 |
using System; |
|
2 |
using System.Collections.Generic; |
|
3 |
using System.Linq; |
|
4 |
using System.Text; |
|
5 |
using System.Threading.Tasks; |
|
6 |
|
|
7 |
namespace Models.Tags |
|
8 |
{ |
|
9 |
public class CreateSubTagRequest |
|
10 |
{ |
|
11 |
public string Name { get; set; } |
|
12 |
public string Description { get; set; } |
|
13 |
public Guid TagId { get; set; } |
|
14 |
} |
|
15 |
} |
Backend/Models/Tags/ModifySubTagRequest.cs | ||
---|---|---|
1 |
using System; |
|
2 |
using System.Collections.Generic; |
|
3 |
using System.Linq; |
|
4 |
using System.Text; |
|
5 |
using System.Threading.Tasks; |
|
6 |
|
|
7 |
namespace Models.Tags |
|
8 |
{ |
|
9 |
public class ModifySubTagRequest |
|
10 |
{ |
|
11 |
public string? Name { get; set; } |
|
12 |
public string? Description { get; set; } |
|
13 |
} |
|
14 |
} |
Také k dispozici: Unified diff
Added endpoints for subtag CRUD