import { Console } from "hsconsole"; import PartyRepo from "../repos/PartyRepo"; import Party from "../entities/Party"; import UserParty from "../entities/UserParty"; import UserPartyRepo from "../repos/UserPartyRepo"; export default abstract class PartyService { public static async CreateParty(currentUserId:number, name:string, partyRef:string) { try { let party = new Party(); party.Name = name; party.PartyRef = partyRef; party.CreatedByUserId = currentUserId; party.CreatedDatetime = new Date(); party = await PartyRepo.insertUpdate(party); const userParty = new UserParty(); userParty.UserId = currentUserId; userParty.PartyId = party.Id; userParty.CreatedByUserId = currentUserId; userParty.CreatedDatetime = new Date(); await UserPartyRepo.insertUpdate(userParty); return party; } catch (e) { Console.printError(`MultiProbe server service error:\n${e}`); throw e; } } public static async SaveParty(currentUserId:number, id:number | undefined, name:string, partyRef:string) { try { let party = id ? await PartyRepo.selectById(id) : null; if (!party) { party = new Party(); party.CreatedByUserId = currentUserId; party.CreatedDatetime = new Date(); } else { party.LastModifiedByUserId = currentUserId; party.LastModifiedDatetime = new Date(); } party.Name = name; party.PartyRef = partyRef; return await PartyRepo.insertUpdate(party); } catch (e) { Console.printError(`MultiProbe server service error:\n${e}`); throw e; } } public static async GetParty(id:number) { try { return await PartyRepo.selectById(id); } catch (e) { Console.printError(`MultiProbe server service error:\n${e}`); throw e; } } public static async GetAll() { try { return await PartyRepo.selectAll(); } catch (e) { Console.printError(`MultiProbe server service error:\n${e}`); throw e; } } public static async GetPartyByPartyRef(partyRef:string) { try { return await PartyRepo.selectByPartyRef(partyRef); } catch (e) { Console.printError(`MultiProbe server service error:\n${e}`); throw e; } } public static async GetUserParties(userId:number) { try { return await PartyRepo.selectByUserId(userId); } catch (e) { Console.printError(`MultiProbe server service error:\n${e}`); throw e; } } public static async DeleteParty(currentUserId:number, partyId:number) { try { const party = await PartyRepo.selectById(partyId); if (!party || party.CreatedByUserId !== currentUserId) { return null; } party.DeletedByUserId = currentUserId; party.DeletedDatetime = new Date(); party.IsDeleted = true; await PartyRepo.insertUpdate(party); return party; } catch (e) { Console.printError(`MultiProbe server service error:\n${e}`); throw e; } } public static async DeletePartyAdmin(currentUserId:number, partyId:number) { try { const party = await PartyRepo.selectById(partyId); if (!party) { return null; } party.DeletedByUserId = currentUserId; party.DeletedDatetime = new Date(); party.IsDeleted = true; await PartyRepo.insertUpdate(party); return party; } catch (e) { Console.printError(`MultiProbe server service error:\n${e}`); throw e; } } public static async GetPartyCount() { try { return await PartyRepo.selectPartyCount(); } catch (e) { Console.printError(`MultiProbe server service error:\n${e}`); throw e; } } }