Skip to content

Instantly share code, notes, and snippets.

@dmytro-kerest
Created March 10, 2020 12:20
Show Gist options
  • Select an option

  • Save dmytro-kerest/e76a821666fff78b3f04d30d7a5922ff to your computer and use it in GitHub Desktop.

Select an option

Save dmytro-kerest/e76a821666fff78b3f04d30d7a5922ff to your computer and use it in GitHub Desktop.
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