feat: assign random color to lesson & deleted some colors in enum type

This commit is contained in:
Sergey Yarkov 2021-11-24 23:21:16 +03:00
parent 14122905d6
commit a4adf27831
4 changed files with 14 additions and 10 deletions

View File

@ -11,15 +11,6 @@ enum ColorEnum {
Purple = '#800080', Purple = '#800080',
Indigo = '#4B0082', Indigo = '#4B0082',
Teal = '#008080', Teal = '#008080',
LightGray = '#D3D3D3',
LightSlateGray = '#778899',
LightGreen = '#90EE90',
LightSeaGreen = '#20B2AA',
LightCoral = '#FFA07A',
LightCyan = '#E0FFFF',
LightSteelBlue = '#B0C4DE',
LightBlue = '#ADD8E6',
LightSkyBlue = '#87CEFA',
MediumVioletRed = '#C71585', MediumVioletRed = '#C71585',
MediumOrchid = '#BA55D3', MediumOrchid = '#BA55D3',
MediumPurple = '#9370DB', MediumPurple = '#9370DB',

View File

@ -2,6 +2,7 @@
import { DateTime } from 'luxon'; import { DateTime } from 'luxon';
import { nanoid } from 'nanoid'; import { nanoid } from 'nanoid';
import { BaseModel, beforeCreate, BelongsTo, belongsTo, column, HasOne, hasOne } from '@ioc:Adonis/Lucid/Orm'; import { BaseModel, beforeCreate, BelongsTo, belongsTo, column, HasOne, hasOne } from '@ioc:Adonis/Lucid/Orm';
import ColorHelper from 'App/Helpers/ColorHelper';
import Course from './Course'; import Course from './Course';
// eslint-disable-next-line import/no-cycle // eslint-disable-next-line import/no-cycle
import LessonContent from './LessonContent'; import LessonContent from './LessonContent';
@ -58,4 +59,13 @@ export default class Lesson extends BaseModel {
public static assignLessonId(lesson: Lesson) { public static assignLessonId(lesson: Lesson) {
lesson.id = nanoid(); lesson.id = nanoid();
} }
@beforeCreate()
public static async assignRandomColor(course: Course) {
const color = await ColorHelper.generateRandomColor();
if (color) {
course.color_id = color.id;
}
}
} }

View File

@ -72,10 +72,13 @@ export default class LessonRepository {
* @returns Lesson * @returns Lesson
*/ */
public async create(course: Course, data: CreateLessonValidator['schema']['props']): Promise<Lesson> { public async create(course: Course, data: CreateLessonValidator['schema']['props']): Promise<Lesson> {
await course.loadCount('lessons');
const lesson = await this.Lesson.create({ const lesson = await this.Lesson.create({
title: data.title, title: data.title,
description: data.description, description: data.description,
duration: data.duration.toFormat('HH:mm:ss'), duration: data.duration.toFormat('HH:mm:ss'),
display_order: Number.parseInt(course.$extras.lessons_count, 10) + 1,
}); });
/** /**

View File

@ -70,7 +70,7 @@ export const LessonFactory = Factory.define(Lesson, ({ faker }) => {
minute: faker.datatype.number({ min: 30, max: 59 }), minute: faker.datatype.number({ min: 30, max: 59 }),
second: 0, second: 0,
}).toFormat('HH:mm:ss'), }).toFormat('HH:mm:ss'),
color_id: faker.datatype.number({ min: 1, max: 25 }), color_id: faker.datatype.number({ min: 1, max: 15 }),
}; };
}) })
.relation('content', () => LessonContentFactory) .relation('content', () => LessonContentFactory)