Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- myApp.controller('UserController', ['UserService', function
- (UserService) {
- // console.log('UserController created');
- var self = this;
- self.userService = UserService;
- self.userObject = UserService.userObject;
- self.items = UserService.items;
- self.status = UserService.status;
- // uploading files using filestack
- self.openPicker = function (document) {
- UserService.openPicker(document);
- };
- self.document = function (items) {
- UserService.document(items);
- };
- // GET Status on page load
- self.getStatus = function () {
- UserService.getStatus();
- };
- }]);
- myApp.service('UserService', ['$http', '$location', '$mdDialog',
- function ($http, $location, $mdDialog) {
- console.log('UserService Loaded');
- var self = this;
- self.userObject = {};
- var fsClient = filestack.init('AXWNQAQuJSmq8G5Dp0gIDz');
- self.document = {
- list: []
- };
- self.status = {
- list: []
- }
- self.editItems = {
- list: []
- };
- self.items = {
- list: []
- };
- self.jobs = {
- list: []
- };
- self.getuser = function () {
- // console.log('UserService -- getuser');
- $http.get('/api/user').then(function (response) {
- if (response.data.username) {
- // user has a curret session on the server
- self.userObject.userName = response.data.username;
- // self.getJobs();
- self.getStatus();
- // console.log('UserService -- getuser -- User Data: ',
- self.userObject.userName);
- } else {
- console.log('UserService -- getuser -- failure');
- // user has no session, bounce them back to the login page
- $location.path("/home");
- }
- }, function (response) {
- console.log('UserService -- getuser -- failure: ', response);
- $location.path("/home");
- });
- }
- self.logout = function () {
- console.log('UserService -- logout');
- $http.get('/api/user/logout').then(function (response) {
- console.log('UserService -- logout -- logged out');
- $location.path("/home");
- });
- }
- self.document = function (items, ev) {
- $mdDialog.show({
- controller: EditPostingModalController,
- controllerAs: 'vm',
- templateUrl: '../views/templates/edit-posting-modal.html',
- parent: angular.element(document.body),
- targetEvent: ev,
- mapURL: '',
- clickOutsideToClose: true,
- resolve: {
- item: function () {
- return items;
- }
- }
- })
- }
- function EditPostingModalController($mdDialog, item, UserService) {
- const self = this;
- self.editItems = item;
- console.log(self.editItems);
- self.closeModal = function () {
- self.hide();
- }
- }
- self.openPicker = function openPicker(document) {
- fsClient.pick({
- fromSources: ["local_file_system"],
- accept: [".doc", ".docx", ".docm", ".pdf", "text/plain"]
- })
- .then(function (response) {
- self.document.list = response.filesUploaded;
- console.log('response from filestack', self.document.list);
- self.getDocumentURL(self.document.list);
- });
- }
- self.getDocumentURL = function (response) {
- // loop to get filestack image url
- for (let i = 0; i < response.length; i++) {
- documentURL = response[i].url;
- }
- console.log('document URL:', documentURL);
- self.document.list = documentURL;
- console.log(self.document.list);
- }
- // Send item list to server
- self.addJob = function (data) {
- // console.log('in addJob service:', self.document.list);
- data.document_url = self.document.list;
- console.log('service adding job data', data);
- return $http.post('/api/user/addJob', data)
- .then(function (response) {
- // swal("Form data and image were successfully added to the table!")
- console.log(data);
- // self.getJobs();
- })
- .catch(function (err) {
- console.log('error on post request - adding item');
- })
- } //end add item
- self.getStatus = function () {
- return $http.get('/user/getStatus')
- .then(function (response) {
- console.log(response);
- self.status.list = response.data;
- })
- .catch(function (error) {
- console.log('failed to get status', error);
- });
- }
- }]);
- const express = require('express');
- const encryptLib = require('../modules/encryption');
- const Person = require('../models/Person');
- const userStrategy = require('../strategies/sql.localstrategy');
- const pool = require('../modules/pool.js');
- const router = express.Router();
- // Handles Ajax request for user information if user is authenticated
- router.get('/', (req, res) => {
- // check if logged in
- if (req.isAuthenticated()) {
- // send back user object from database
- res.send(req.user);
- } else {
- // failure best handled on the server. do redirect here.
- res.sendStatus(403);
- }
- });
- // Handles POST request with new user data
- // The only thing different from this and every other post we've seen
- // is that the password gets encrypted before being inserted
- router.post('/register', (req, res, next) => {
- const username = req.body.username;
- const password = encryptLib.encryptPassword(req.body.password);
- var saveUser = {
- username: req.body.username,
- password: encryptLib.encryptPassword(req.body.password)
- };
- console.log('new user:', saveUser);
- pool.query('INSERT INTO users (username, password) VALUES ($1, $2) RETURNING id', [saveUser.username, saveUser.password], (err, result) => {
- if (err) {
- console.log("Error inserting data: ", err);
- res.sendStatus(500);
- } else {
- res.sendStatus(201);
- }
- });
- });
- // Handles login form authenticate/login POST
- // userStrategy.authenticate('local') is middleware that we run on this route
- // this middleware will run our POST if successful
- // this middleware will send a 404 if not successful
- router.post('/login', userStrategy.authenticate('local'), (req, res) => {
- res.sendStatus(200);
- });
- // clear all server session information about this user
- router.get('/logout', (req, res) => {
- // Use passport's built-in method to log out the user
- req.logout();
- res.sendStatus(200);
- });
- /***********************************
- ****ADD ITEM TO JOBS TABLE****
- ***********************************
- Insert catch data into table */
- router.post('/addJob', function (req, res) {
- // console.log('in POST router');
- if (req.isAuthenticated()) {
- //add catch event to user data table
- const queryText = `INSERT INTO jobs
- (date,
- company,
- position,
- contact,
- email)
- VALUES ($1, $2, $3, $4, $5)`;
- pool.query(queryText, [
- req.body.date,
- req.body.company,
- req.body.position,
- req.body.contact,
- req.body.email,
- ])
- .then((result) => {
- console.log('result:', result);
- console.log(req.user.id);
- res.send(result);
- })
- // erorr handling
- .catch((err) => {
- console.log('error:', err);
- res.sendStatus(500);
- });
- } else {
- // failure best handled on the server. do redirect here.
- res.sendStatus(403);
- }
- /* GET Status */
- router.get('/getStatus', function (req, res) {
- console.log('in getStatus router');
- const queryText = `SELECT name FROM status`;
- pool.query(queryText)
- .then((result) => {
- console.log('status result:', result);
- res.send(result.rows);
- })
- .catch((err) => {
- console.log('Error getting status', err);
- res.sendStatus(500);
- })
- });
- /* GET All Categories */
- router.get('/getStatus', (req, res) => {
- console.log('in getStatus router');
- const CategoryQuery = `SELECT * FROM categories`;
- pool.query(CategoryQuery)
- .then((result) => {
- res.send(result.rows);
- })
- .catch((err) => {
- ('Error getting categories');
- res.sendStatus(500);
- })
- });
- });
- module.exports = router;
- <div ng-include="'views/partials/user.header.html'"></div>
- <div class="container">
- <md-content layout-padding class="jobForm" layout-align="center center">
- <div class="fishForm" ng-cloak class="md-inline-form" layout-align="center center">
- <form layout-align="center center">
- <div layout-gt-sm="row" layout-align="center center">
- <md-input-container>
- <label>Date</label>
- <md-datepicker ng-model="vm.job.date" name="dateField"></md-datepicker>
- </md-input-container>
- <md-input-container>
- <div>
- <label>Company</label>
- <input name="company" ng-model="vm.job.company">
- </div>
- </md-input-container>
- <md-input-container>
- <div>
- <label>Position</label>
- <input name="position" ng-model="vm.job.position">
- </div>
- </md-input-container>
- </div>
- <div layout-gt-sm="row" layout-align="center center">
- <md-input-container>
- <md-select ng-model="action" placeholder="Action">
- <md-option ng-value="opt" ng-repeat="action in vm.job.list">{{action}}</md-option>
- </md-select>
- </md-input-container>
- <md-input-container>
- <div>
- <label>Contact</label>
- <input name="contact" ng-model="vm.job.contact">
- </div>
- </md-input-container>
- <md-input-container>
- <div>
- <label>Email</label>
- <input name="email" ng-model="vm.job.email">
- </div>
- </md-input-container>
- <md-input-container>
- <div>
- <label>Follow-up</label>
- <input name="follow_up" ng-model="vm.job.follow_up">
- </div>
- </md-input-container>
- <md-input-container>
- <md-select ng-model="name" placeholder="Status">
- <md-option ng-repeat="status in vm.status.list track by status.name" ng-value="{{status.name}}">{{status.name}}</md-option>
- </md-select>
- </md-input-container>
- </div>
- <div layout-gt-sm="row" layout-align="center center" class="userFormBtn">
- <md-input-container>
- <md-button class="md-raised generalButton userInfoSubmit" ng-model="vm.job.resume" ng-click="vm.openPicker(images.url)">Upload Resume
- </md-button>
- </md-input-container>
- <md-input-container>
- <md-button class="md-raised generalButton userInfoSubmit" ng-model="vm.job.cover_letter" ng-click="vm.openPicker(images.url)">Upload Cover Letter
- </md-button>
- </md-input-container>
- <md-input-container>
- <md-button class="md-raised md-accent generalButton userInfoSubmit" ng-click="vm.addJob(vm.job)">Submit
- </md-button>
- </md-input-container>
- </div>
- </div>
- </md-content>
- <div class="table table-hover" layout="horizontal" layout-align="center center" ng-cloak class="md-inline-form" layout-wrap>
- <table id="jobTable">
- <thead>
- <tr>
- <th>Date</th>
- <th>Company</th>
- <th>Position</th>
- <th>Contact</th>
- <th>Email</th>
- <th>Status</th>
- <th>Edit</th>
- </tr>
- </thead>
- <tbody>
- <tr class="jobTableRows">
- <td>03-29-2018</td>
- <td>ABC</td>
- <td>Dev</td>
- <td>Ashley Allen</td>
- <td>email@email.com</td>
- <td>Phone Interview</td>
- <td>
- <md-button class="md-raised md-primary" ng-click="vm.document({items})">Edit row</md-button>
- </td>
- </tr>
- </tbody>
- <!-- <tbody ng-repeat="items in vm.items.list track by $index">
- <tr class="jobTableRows">
- <td>{{items.date | date:'MM-dd-yyyy'}}</td>
- <td>{{items.company}}</td>
- <td>{{items.position}}</td>
- <td>{{items.contact_name}}</td>
- <td>{{items.email}}</td>
- <td>
- <md-button class="md-raised md-primary" ng-click="vm.document({items})">Edit row</md-button>
- </td>
- </tr>
- </tbody> -->
- </table>
- </div>
- </div>
Add Comment
Please, Sign In to add comment