1 import { CityRepository } from '../repository/city';
2 import { MailRepository } from '../repository/mail';
3 import { UnitTrainingQueue, UnitTrainingQueueRepository } from '../repository/training-queue';
4 import { UnitRepository } from '../repository/unit';
5 import { Task } from './task';
8 const unitTrainigQueueRepo = new UnitTrainingQueueRepository();
9 const cityRepo = new CityRepository();
10 const unitRepo = new UnitRepository();
11 const mailRepo = new MailRepository();
14 export const unitTraining = new Task<UnitTrainingQueue>('unit-training', async (task, job) => {
15 const dbEntry = await unitTrainigQueueRepo.FindOne({id: job.data.id});
18 console.error(`Build queue ${job.data.id} is invalid`);
21 const unit = await unitRepo.findBySlug(job.data.unit_type);
24 console.error(`Invalid unit type for training ${job.data.unit_type}`);
28 const city = await cityRepo.getUsersCity(dbEntry.owner);
31 console.error(`City for owner ${job.data.owner} does not exist`);
35 city[unit.slug] += dbEntry.amount;
39 unitTrainigQueueRepo.Delete({id: dbEntry.id}),
40 mailRepo.createSystemMessage(
43 `Your ${unit.display} (${dbEntry.amount}) were trained!`,
45 <b>Your army grows!</b>
46 <p>You have trained ${dbEntry.amount} more ${unit.display}</p>