Guest User

Untitled

a guest
Apr 2nd, 2018
251
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 12.90 KB | None | 0 0
  1. myApp.controller('UserController', ['UserService', function
  2. (UserService) {
  3. // console.log('UserController created');
  4. var self = this;
  5. self.userService = UserService;
  6. self.userObject = UserService.userObject;
  7. self.items = UserService.items;
  8. self.status = UserService.status;
  9.  
  10. // uploading files using filestack
  11. self.openPicker = function (document) {
  12. UserService.openPicker(document);
  13. };
  14.  
  15. self.document = function (items) {
  16. UserService.document(items);
  17. };
  18.  
  19. // GET Status on page load
  20. self.getStatus = function () {
  21. UserService.getStatus();
  22. };
  23. }]);
  24.  
  25. myApp.service('UserService', ['$http', '$location', '$mdDialog',
  26. function ($http, $location, $mdDialog) {
  27. console.log('UserService Loaded');
  28. var self = this;
  29. self.userObject = {};
  30. var fsClient = filestack.init('AXWNQAQuJSmq8G5Dp0gIDz');
  31.  
  32. self.document = {
  33. list: []
  34. };
  35. self.status = {
  36. list: []
  37. }
  38. self.editItems = {
  39. list: []
  40. };
  41. self.items = {
  42. list: []
  43. };
  44. self.jobs = {
  45. list: []
  46. };
  47.  
  48. self.getuser = function () {
  49. // console.log('UserService -- getuser');
  50. $http.get('/api/user').then(function (response) {
  51. if (response.data.username) {
  52. // user has a curret session on the server
  53. self.userObject.userName = response.data.username;
  54. // self.getJobs();
  55. self.getStatus();
  56. // console.log('UserService -- getuser -- User Data: ',
  57. self.userObject.userName);
  58. } else {
  59. console.log('UserService -- getuser -- failure');
  60. // user has no session, bounce them back to the login page
  61. $location.path("/home");
  62. }
  63. }, function (response) {
  64. console.log('UserService -- getuser -- failure: ', response);
  65. $location.path("/home");
  66. });
  67. }
  68.  
  69. self.logout = function () {
  70. console.log('UserService -- logout');
  71. $http.get('/api/user/logout').then(function (response) {
  72. console.log('UserService -- logout -- logged out');
  73. $location.path("/home");
  74. });
  75. }
  76.  
  77. self.document = function (items, ev) {
  78. $mdDialog.show({
  79. controller: EditPostingModalController,
  80. controllerAs: 'vm',
  81. templateUrl: '../views/templates/edit-posting-modal.html',
  82. parent: angular.element(document.body),
  83. targetEvent: ev,
  84. mapURL: '',
  85. clickOutsideToClose: true,
  86. resolve: {
  87. item: function () {
  88. return items;
  89. }
  90. }
  91. })
  92. }
  93.  
  94. function EditPostingModalController($mdDialog, item, UserService) {
  95. const self = this;
  96. self.editItems = item;
  97. console.log(self.editItems);
  98.  
  99. self.closeModal = function () {
  100. self.hide();
  101. }
  102. }
  103.  
  104. self.openPicker = function openPicker(document) {
  105. fsClient.pick({
  106. fromSources: ["local_file_system"],
  107. accept: [".doc", ".docx", ".docm", ".pdf", "text/plain"]
  108. })
  109. .then(function (response) {
  110. self.document.list = response.filesUploaded;
  111. console.log('response from filestack', self.document.list);
  112. self.getDocumentURL(self.document.list);
  113. });
  114. }
  115.  
  116. self.getDocumentURL = function (response) {
  117. // loop to get filestack image url
  118. for (let i = 0; i < response.length; i++) {
  119. documentURL = response[i].url;
  120. }
  121. console.log('document URL:', documentURL);
  122. self.document.list = documentURL;
  123. console.log(self.document.list);
  124. }
  125.  
  126. // Send item list to server
  127. self.addJob = function (data) {
  128. // console.log('in addJob service:', self.document.list);
  129. data.document_url = self.document.list;
  130. console.log('service adding job data', data);
  131. return $http.post('/api/user/addJob', data)
  132. .then(function (response) {
  133. // swal("Form data and image were successfully added to the table!")
  134. console.log(data);
  135. // self.getJobs();
  136. })
  137. .catch(function (err) {
  138. console.log('error on post request - adding item');
  139. })
  140. } //end add item
  141.  
  142. self.getStatus = function () {
  143. return $http.get('/user/getStatus')
  144. .then(function (response) {
  145. console.log(response);
  146. self.status.list = response.data;
  147. })
  148. .catch(function (error) {
  149. console.log('failed to get status', error);
  150. });
  151. }
  152. }]);
  153.  
  154. const express = require('express');
  155. const encryptLib = require('../modules/encryption');
  156. const Person = require('../models/Person');
  157. const userStrategy = require('../strategies/sql.localstrategy');
  158. const pool = require('../modules/pool.js');
  159. const router = express.Router();
  160.  
  161. // Handles Ajax request for user information if user is authenticated
  162. router.get('/', (req, res) => {
  163. // check if logged in
  164. if (req.isAuthenticated()) {
  165. // send back user object from database
  166. res.send(req.user);
  167. } else {
  168. // failure best handled on the server. do redirect here.
  169. res.sendStatus(403);
  170. }
  171. });
  172.  
  173. // Handles POST request with new user data
  174. // The only thing different from this and every other post we've seen
  175. // is that the password gets encrypted before being inserted
  176. router.post('/register', (req, res, next) => {
  177. const username = req.body.username;
  178. const password = encryptLib.encryptPassword(req.body.password);
  179.  
  180. var saveUser = {
  181. username: req.body.username,
  182. password: encryptLib.encryptPassword(req.body.password)
  183. };
  184. console.log('new user:', saveUser);
  185. pool.query('INSERT INTO users (username, password) VALUES ($1, $2) RETURNING id', [saveUser.username, saveUser.password], (err, result) => {
  186. if (err) {
  187. console.log("Error inserting data: ", err);
  188. res.sendStatus(500);
  189. } else {
  190. res.sendStatus(201);
  191. }
  192. });
  193. });
  194.  
  195. // Handles login form authenticate/login POST
  196. // userStrategy.authenticate('local') is middleware that we run on this route
  197. // this middleware will run our POST if successful
  198. // this middleware will send a 404 if not successful
  199. router.post('/login', userStrategy.authenticate('local'), (req, res) => {
  200. res.sendStatus(200);
  201. });
  202.  
  203. // clear all server session information about this user
  204. router.get('/logout', (req, res) => {
  205. // Use passport's built-in method to log out the user
  206. req.logout();
  207. res.sendStatus(200);
  208. });
  209.  
  210.  
  211. /***********************************
  212. ****ADD ITEM TO JOBS TABLE****
  213. ***********************************
  214. Insert catch data into table */
  215. router.post('/addJob', function (req, res) {
  216. // console.log('in POST router');
  217. if (req.isAuthenticated()) {
  218. //add catch event to user data table
  219. const queryText = `INSERT INTO jobs
  220. (date,
  221. company,
  222. position,
  223. contact,
  224. email)
  225. VALUES ($1, $2, $3, $4, $5)`;
  226. pool.query(queryText, [
  227. req.body.date,
  228. req.body.company,
  229. req.body.position,
  230. req.body.contact,
  231. req.body.email,
  232. ])
  233. .then((result) => {
  234. console.log('result:', result);
  235. console.log(req.user.id);
  236.  
  237. res.send(result);
  238. })
  239. // erorr handling
  240. .catch((err) => {
  241. console.log('error:', err);
  242. res.sendStatus(500);
  243. });
  244. } else {
  245. // failure best handled on the server. do redirect here.
  246. res.sendStatus(403);
  247. }
  248.  
  249. /* GET Status */
  250. router.get('/getStatus', function (req, res) {
  251. console.log('in getStatus router');
  252. const queryText = `SELECT name FROM status`;
  253. pool.query(queryText)
  254. .then((result) => {
  255. console.log('status result:', result);
  256. res.send(result.rows);
  257.  
  258. })
  259. .catch((err) => {
  260. console.log('Error getting status', err);
  261. res.sendStatus(500);
  262. })
  263. });
  264.  
  265. /* GET All Categories */
  266. router.get('/getStatus', (req, res) => {
  267. console.log('in getStatus router');
  268.  
  269. const CategoryQuery = `SELECT * FROM categories`;
  270. pool.query(CategoryQuery)
  271. .then((result) => {
  272. res.send(result.rows);
  273. })
  274. .catch((err) => {
  275. ('Error getting categories');
  276. res.sendStatus(500);
  277. })
  278. });
  279. });
  280.  
  281. module.exports = router;
  282.  
  283. <div ng-include="'views/partials/user.header.html'"></div>
  284.  
  285. <div class="container">
  286. <md-content layout-padding class="jobForm" layout-align="center center">
  287. <div class="fishForm" ng-cloak class="md-inline-form" layout-align="center center">
  288. <form layout-align="center center">
  289. <div layout-gt-sm="row" layout-align="center center">
  290. <md-input-container>
  291. <label>Date</label>
  292. <md-datepicker ng-model="vm.job.date" name="dateField"></md-datepicker>
  293. </md-input-container>
  294. <md-input-container>
  295. <div>
  296. <label>Company</label>
  297. <input name="company" ng-model="vm.job.company">
  298. </div>
  299. </md-input-container>
  300. <md-input-container>
  301. <div>
  302. <label>Position</label>
  303. <input name="position" ng-model="vm.job.position">
  304. </div>
  305. </md-input-container>
  306. </div>
  307. <div layout-gt-sm="row" layout-align="center center">
  308. <md-input-container>
  309. <md-select ng-model="action" placeholder="Action">
  310. <md-option ng-value="opt" ng-repeat="action in vm.job.list">{{action}}</md-option>
  311. </md-select>
  312. </md-input-container>
  313. <md-input-container>
  314. <div>
  315. <label>Contact</label>
  316. <input name="contact" ng-model="vm.job.contact">
  317. </div>
  318. </md-input-container>
  319. <md-input-container>
  320. <div>
  321. <label>Email</label>
  322. <input name="email" ng-model="vm.job.email">
  323. </div>
  324. </md-input-container>
  325. <md-input-container>
  326. <div>
  327. <label>Follow-up</label>
  328. <input name="follow_up" ng-model="vm.job.follow_up">
  329. </div>
  330. </md-input-container>
  331. <md-input-container>
  332. <md-select ng-model="name" placeholder="Status">
  333. <md-option ng-repeat="status in vm.status.list track by status.name" ng-value="{{status.name}}">{{status.name}}</md-option>
  334. </md-select>
  335. </md-input-container>
  336. </div>
  337. <div layout-gt-sm="row" layout-align="center center" class="userFormBtn">
  338. <md-input-container>
  339. <md-button class="md-raised generalButton userInfoSubmit" ng-model="vm.job.resume" ng-click="vm.openPicker(images.url)">Upload Resume
  340. </md-button>
  341. </md-input-container>
  342. <md-input-container>
  343. <md-button class="md-raised generalButton userInfoSubmit" ng-model="vm.job.cover_letter" ng-click="vm.openPicker(images.url)">Upload Cover Letter
  344. </md-button>
  345. </md-input-container>
  346. <md-input-container>
  347. <md-button class="md-raised md-accent generalButton userInfoSubmit" ng-click="vm.addJob(vm.job)">Submit
  348. </md-button>
  349. </md-input-container>
  350. </div>
  351. </div>
  352. </md-content>
  353. <div class="table table-hover" layout="horizontal" layout-align="center center" ng-cloak class="md-inline-form" layout-wrap>
  354. <table id="jobTable">
  355. <thead>
  356. <tr>
  357. <th>Date</th>
  358. <th>Company</th>
  359. <th>Position</th>
  360. <th>Contact</th>
  361. <th>Email</th>
  362. <th>Status</th>
  363. <th>Edit</th>
  364. </tr>
  365. </thead>
  366. <tbody>
  367. <tr class="jobTableRows">
  368. <td>03-29-2018</td>
  369. <td>ABC</td>
  370. <td>Dev</td>
  371. <td>Ashley Allen</td>
  372. <td>email@email.com</td>
  373. <td>Phone Interview</td>
  374. <td>
  375. <md-button class="md-raised md-primary" ng-click="vm.document({items})">Edit row</md-button>
  376. </td>
  377. </tr>
  378. </tbody>
  379. <!-- <tbody ng-repeat="items in vm.items.list track by $index">
  380. <tr class="jobTableRows">
  381. <td>{{items.date | date:'MM-dd-yyyy'}}</td>
  382. <td>{{items.company}}</td>
  383. <td>{{items.position}}</td>
  384. <td>{{items.contact_name}}</td>
  385. <td>{{items.email}}</td>
  386. <td>
  387. <md-button class="md-raised md-primary" ng-click="vm.document({items})">Edit row</md-button>
  388. </td>
  389. </tr>
  390. </tbody> -->
  391. </table>
  392. </div>
  393. </div>
Add Comment
Please, Sign In to add comment