Created
March 10, 2020 12:20
-
-
Save dmytro-kerest/e76a821666fff78b3f04d30d7a5922ff to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import { Request, Response } from "express"; | |
| import XeroService from '../services/XeroService'; | |
| import LocateServiceFactory from "../services/LocateServiceFactory"; | |
| export default class XeroLocateController { | |
| static createProject = async (req: Request, res: Response) => { | |
| const { name, env } = req.query; | |
| const locateService = await LocateServiceFactory.create(env); | |
| try { | |
| await XeroService.createProject(name); | |
| res.locals.sse.sendData({ | |
| status: 'message', | |
| message: `Project "${name}" created in Xero.`, | |
| progress: 25 | |
| }); | |
| await locateService.requestServiceSync(); | |
| res.locals.sse.sendData({ | |
| status: 'message', | |
| message: 'Xero Service Refreshed', | |
| progress: 50 | |
| }); | |
| const newVendor = await locateService.createNewVendor(name); | |
| res.locals.sse.sendData({ | |
| status: 'message', | |
| message: `New Vendor "Project: ${name}" created.`, | |
| progress: 75 | |
| }); | |
| const newSite = await locateService.createSite(newVendor, name); | |
| const link = locateService.generateSiteLink(newSite); | |
| res.locals.sse.sendData({ | |
| status: 'success', | |
| message: `Success! New Vendor Site has been created.`, | |
| progress: 100, | |
| data: { | |
| link, | |
| vendor: newVendor, | |
| site: newSite | |
| } | |
| }); | |
| } catch(e) { | |
| res.locals.sse.sendData({ | |
| status: 'error', | |
| message: e.message, | |
| }); | |
| } | |
| res.locals.sse.endStream(); | |
| }; | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment