Browse Source

addcart,delete,deleteAll works

gauravfullcomponent
Gaurav Daharia 4 years ago
commit
27bf3baaf7
143 changed files with 17578 additions and 0 deletions
  1. 17
      Angular-UrbanBazaar/.browserslistrc
  2. 16
      Angular-UrbanBazaar/.editorconfig
  3. 45
      Angular-UrbanBazaar/.gitignore
  4. 27
      Angular-UrbanBazaar/README.md
  5. 110
      Angular-UrbanBazaar/angular.json
  6. 2
      Angular-UrbanBazaar/debug.log
  7. 44
      Angular-UrbanBazaar/karma.conf.js
  8. 12155
      Angular-UrbanBazaar/package-lock.json
  9. 42
      Angular-UrbanBazaar/package.json
  10. 19
      Angular-UrbanBazaar/proxy.config.json
  11. 31
      Angular-UrbanBazaar/src/app/app-routing.module.ts
  12. 0
      Angular-UrbanBazaar/src/app/app.component.css
  13. 3
      Angular-UrbanBazaar/src/app/app.component.html
  14. 35
      Angular-UrbanBazaar/src/app/app.component.spec.ts
  15. 10
      Angular-UrbanBazaar/src/app/app.component.ts
  16. 50
      Angular-UrbanBazaar/src/app/app.module.ts
  17. 21
      Angular-UrbanBazaar/src/app/auth/login/login.component.css
  18. 34
      Angular-UrbanBazaar/src/app/auth/login/login.component.html
  19. 25
      Angular-UrbanBazaar/src/app/auth/login/login.component.spec.ts
  20. 47
      Angular-UrbanBazaar/src/app/auth/login/login.component.ts
  21. 0
      Angular-UrbanBazaar/src/app/auth/sign-up/sign-up.component.css
  22. 83
      Angular-UrbanBazaar/src/app/auth/sign-up/sign-up.component.html
  23. 25
      Angular-UrbanBazaar/src/app/auth/sign-up/sign-up.component.spec.ts
  24. 37
      Angular-UrbanBazaar/src/app/auth/sign-up/sign-up.component.ts
  25. 36
      Angular-UrbanBazaar/src/app/components/cart/cart.component.css
  26. 51
      Angular-UrbanBazaar/src/app/components/cart/cart.component.html
  27. 25
      Angular-UrbanBazaar/src/app/components/cart/cart.component.spec.ts
  28. 59
      Angular-UrbanBazaar/src/app/components/cart/cart.component.ts
  29. 43
      Angular-UrbanBazaar/src/app/components/home/home.component.css
  30. 23
      Angular-UrbanBazaar/src/app/components/home/home.component.html
  31. 25
      Angular-UrbanBazaar/src/app/components/home/home.component.spec.ts
  32. 62
      Angular-UrbanBazaar/src/app/components/home/home.component.ts
  33. 0
      Angular-UrbanBazaar/src/app/components/memberlist/memberlist.component.css
  34. 82
      Angular-UrbanBazaar/src/app/components/memberlist/memberlist.component.html
  35. 25
      Angular-UrbanBazaar/src/app/components/memberlist/memberlist.component.spec.ts
  36. 74
      Angular-UrbanBazaar/src/app/components/memberlist/memberlist.component.ts
  37. 99
      Angular-UrbanBazaar/src/app/components/page-nav-bar/page-nav-bar.component.css
  38. 19
      Angular-UrbanBazaar/src/app/components/page-nav-bar/page-nav-bar.component.html
  39. 25
      Angular-UrbanBazaar/src/app/components/page-nav-bar/page-nav-bar.component.spec.ts
  40. 15
      Angular-UrbanBazaar/src/app/components/page-nav-bar/page-nav-bar.component.ts
  41. 22
      Angular-UrbanBazaar/src/app/components/user-profile-details/user-profile-details.component.css
  42. 95
      Angular-UrbanBazaar/src/app/components/user-profile-details/user-profile-details.component.html
  43. 25
      Angular-UrbanBazaar/src/app/components/user-profile-details/user-profile-details.component.spec.ts
  44. 45
      Angular-UrbanBazaar/src/app/components/user-profile-details/user-profile-details.component.ts
  45. 7
      Angular-UrbanBazaar/src/app/models/cart.spec.ts
  46. 10
      Angular-UrbanBazaar/src/app/models/cart.ts
  47. 7
      Angular-UrbanBazaar/src/app/models/login.spec.ts
  48. 6
      Angular-UrbanBazaar/src/app/models/login.ts
  49. 7
      Angular-UrbanBazaar/src/app/models/member-user.spec.ts
  50. 10
      Angular-UrbanBazaar/src/app/models/member-user.ts
  51. 7
      Angular-UrbanBazaar/src/app/models/orders.spec.ts
  52. 20
      Angular-UrbanBazaar/src/app/models/orders.ts
  53. 7
      Angular-UrbanBazaar/src/app/models/product-category.spec.ts
  54. 6
      Angular-UrbanBazaar/src/app/models/product-category.ts
  55. 7
      Angular-UrbanBazaar/src/app/models/product.spec.ts
  56. 9
      Angular-UrbanBazaar/src/app/models/product.ts
  57. 7
      Angular-UrbanBazaar/src/app/models/user.spec.ts
  58. 15
      Angular-UrbanBazaar/src/app/models/user.ts
  59. 16
      Angular-UrbanBazaar/src/app/services/cart.service.spec.ts
  60. 39
      Angular-UrbanBazaar/src/app/services/cart.service.ts
  61. 16
      Angular-UrbanBazaar/src/app/services/member-user.service.spec.ts
  62. 40
      Angular-UrbanBazaar/src/app/services/member-user.service.ts
  63. 16
      Angular-UrbanBazaar/src/app/services/orders.service.spec.ts
  64. 25
      Angular-UrbanBazaar/src/app/services/orders.service.ts
  65. 16
      Angular-UrbanBazaar/src/app/services/product-category.service.spec.ts
  66. 19
      Angular-UrbanBazaar/src/app/services/product-category.service.ts
  67. 16
      Angular-UrbanBazaar/src/app/services/product.service.spec.ts
  68. 22
      Angular-UrbanBazaar/src/app/services/product.service.ts
  69. 16
      Angular-UrbanBazaar/src/app/services/user.service.spec.ts
  70. 39
      Angular-UrbanBazaar/src/app/services/user.service.ts
  71. 0
      Angular-UrbanBazaar/src/assets/.gitkeep
  72. BIN
      Angular-UrbanBazaar/src/assets/Images/Logo.png
  73. BIN
      Angular-UrbanBazaar/src/assets/Images/download.jpg
  74. 3
      Angular-UrbanBazaar/src/environments/environment.prod.ts
  75. 16
      Angular-UrbanBazaar/src/environments/environment.ts
  76. BIN
      Angular-UrbanBazaar/src/favicon.ico
  77. 18
      Angular-UrbanBazaar/src/index.html
  78. 12
      Angular-UrbanBazaar/src/main.ts
  79. 65
      Angular-UrbanBazaar/src/polyfills.ts
  80. 4
      Angular-UrbanBazaar/src/styles.css
  81. 25
      Angular-UrbanBazaar/src/test.ts
  82. 15
      Angular-UrbanBazaar/tsconfig.app.json
  83. 31
      Angular-UrbanBazaar/tsconfig.json
  84. 18
      Angular-UrbanBazaar/tsconfig.spec.json
  85. 33
      UB_ProductServiceProxy/.gitignore
  86. 117
      UB_ProductServiceProxy/.mvn/wrapper/MavenWrapperDownloader.java
  87. BIN
      UB_ProductServiceProxy/.mvn/wrapper/maven-wrapper.jar
  88. 2
      UB_ProductServiceProxy/.mvn/wrapper/maven-wrapper.properties
  89. 310
      UB_ProductServiceProxy/mvnw
  90. 182
      UB_ProductServiceProxy/mvnw.cmd
  91. 56
      UB_ProductServiceProxy/pom.xml
  92. 13
      UB_ProductServiceProxy/src/main/java/com/example/urbanbazaar/ServletInitializer.java
  93. 13
      UB_ProductServiceProxy/src/main/java/com/example/urbanbazaar/UbProductServiceProxyApplication.java
  94. 88
      UB_ProductServiceProxy/src/main/java/com/example/urbanbazaar/controller/CartController.java
  95. 22
      UB_ProductServiceProxy/src/main/java/com/example/urbanbazaar/controller/ProductCategoryController.java
  96. 56
      UB_ProductServiceProxy/src/main/java/com/example/urbanbazaar/controller/ProductController.java
  97. 68
      UB_ProductServiceProxy/src/main/java/com/example/urbanbazaar/model/Cart.java
  98. 71
      UB_ProductServiceProxy/src/main/java/com/example/urbanbazaar/model/Product.java
  99. 42
      UB_ProductServiceProxy/src/main/java/com/example/urbanbazaar/model/ProductCategory.java
  100. 142
      UB_ProductServiceProxy/src/main/java/com/example/urbanbazaar/model/User.java

17
Angular-UrbanBazaar/.browserslistrc

@ -0,0 +1,17 @@
# This file is used by the build system to adjust CSS and JS output to support the specified browsers below.
# For additional information regarding the format and rule options, please see:
# https://github.com/browserslist/browserslist#queries
# For the full list of supported browsers by the Angular framework, please see:
# https://angular.io/guide/browser-support
# You can see what browsers were selected by your queries by running:
# npx browserslist
last 1 Chrome version
last 1 Firefox version
last 2 Edge major versions
last 2 Safari major versions
last 2 iOS major versions
Firefox ESR
not IE 11 # Angular supports IE 11 only as an opt-in. To opt-in, remove the 'not' prefix on this line.

16
Angular-UrbanBazaar/.editorconfig

@ -0,0 +1,16 @@
# Editor configuration, see https://editorconfig.org
root = true
[*]
charset = utf-8
indent_style = space
indent_size = 2
insert_final_newline = true
trim_trailing_whitespace = true
[*.ts]
quote_type = single
[*.md]
max_line_length = off
trim_trailing_whitespace = false

45
Angular-UrbanBazaar/.gitignore

@ -0,0 +1,45 @@
# See http://help.github.com/ignore-files/ for more about ignoring files.
# compiled output
/dist
/tmp
/out-tsc
# Only exists if Bazel was run
/bazel-out
# dependencies
/node_modules
# profiling files
chrome-profiler-events*.json
# IDEs and editors
/.idea
.project
.classpath
.c9/
*.launch
.settings/
*.sublime-workspace
# IDE - VSCode
.vscode/*
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json
.history/*
# misc
/.sass-cache
/connect.lock
/coverage
/libpeerconnection.log
npm-debug.log
yarn-error.log
testem.log
/typings
# System Files
.DS_Store
Thumbs.db

27
Angular-UrbanBazaar/README.md

@ -0,0 +1,27 @@
# AngularUrbanBazaar
This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 12.1.1.
## Development server
Run `ng serve` for a dev server. Navigate to `http://localhost:4200/`. The app will automatically reload if you change any of the source files.
## Code scaffolding
Run `ng generate component component-name` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module`.
## Build
Run `ng build` to build the project. The build artifacts will be stored in the `dist/` directory.
## Running unit tests
Run `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io).
## Running end-to-end tests
Run `ng e2e` to execute the end-to-end tests via a platform of your choice. To use this command, you need to first add a package that implements end-to-end testing capabilities.
## Further help
To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page.

110
Angular-UrbanBazaar/angular.json

@ -0,0 +1,110 @@
{
"$schema": "./node_modules/@angular/cli/lib/config/schema.json",
"version": 1,
"newProjectRoot": "projects",
"projects": {
"Angular-UrbanBazaar": {
"projectType": "application",
"schematics": {
"@schematics/angular:application": {
"strict": true
}
},
"root": "",
"sourceRoot": "src",
"prefix": "app",
"architect": {
"build": {
"builder": "@angular-devkit/build-angular:browser",
"options": {
"outputPath": "dist/Angular-UrbanBazaar",
"index": "src/index.html",
"main": "src/main.ts",
"polyfills": "src/polyfills.ts",
"tsConfig": "tsconfig.app.json",
"assets": [
"src/favicon.ico",
"src/assets"
],
"styles": [
"./node_modules/@angular/material/prebuilt-themes/deeppurple-amber.css",
"src/styles.css"
],
"scripts": []
},
"configurations": {
"production": {
"budgets": [
{
"type": "initial",
"maximumWarning": "500kb",
"maximumError": "1mb"
},
{
"type": "anyComponentStyle",
"maximumWarning": "2kb",
"maximumError": "4kb"
}
],
"fileReplacements": [
{
"replace": "src/environments/environment.ts",
"with": "src/environments/environment.prod.ts"
}
],
"outputHashing": "all"
},
"development": {
"buildOptimizer": false,
"optimization": false,
"vendorChunk": true,
"extractLicenses": false,
"sourceMap": true,
"namedChunks": true
}
},
"defaultConfiguration": "production"
},
"serve": {
"builder": "@angular-devkit/build-angular:dev-server",
"configurations": {
"production": {
"browserTarget": "Angular-UrbanBazaar:build:production",
"proxyConfig": "proxy.config.json"
},
"development": {
"browserTarget": "Angular-UrbanBazaar:build:development",
"proxyConfig": "proxy.config.json"
}
},
"defaultConfiguration": "development"
},
"extract-i18n": {
"builder": "@angular-devkit/build-angular:extract-i18n",
"options": {
"browserTarget": "Angular-UrbanBazaar:build"
}
},
"test": {
"builder": "@angular-devkit/build-angular:karma",
"options": {
"main": "src/test.ts",
"polyfills": "src/polyfills.ts",
"tsConfig": "tsconfig.spec.json",
"karmaConfig": "karma.conf.js",
"assets": [
"src/favicon.ico",
"src/assets"
],
"styles": [
"./node_modules/@angular/material/prebuilt-themes/deeppurple-amber.css",
"src/styles.css"
],
"scripts": []
}
}
}
}
},
"defaultProject": "Angular-UrbanBazaar"
}

2
Angular-UrbanBazaar/debug.log

@ -0,0 +1,2 @@
[0919/155655.703:ERROR:registration_protocol_win.cc(102)] CreateFile: The system cannot find the file specified. (0x2)
[0919/155714.431:ERROR:registration_protocol_win.cc(102)] CreateFile: The system cannot find the file specified. (0x2)

44
Angular-UrbanBazaar/karma.conf.js

@ -0,0 +1,44 @@
// Karma configuration file, see link for more information
// https://karma-runner.github.io/1.0/config/configuration-file.html
module.exports = function (config) {
config.set({
basePath: '',
frameworks: ['jasmine', '@angular-devkit/build-angular'],
plugins: [
require('karma-jasmine'),
require('karma-chrome-launcher'),
require('karma-jasmine-html-reporter'),
require('karma-coverage'),
require('@angular-devkit/build-angular/plugins/karma')
],
client: {
jasmine: {
// you can add configuration options for Jasmine here
// the possible options are listed at https://jasmine.github.io/api/edge/Configuration.html
// for example, you can disable the random execution with `random: false`
// or set a specific seed with `seed: 4321`
},
clearContext: false // leave Jasmine Spec Runner output visible in browser
},
jasmineHtmlReporter: {
suppressAll: true // removes the duplicated traces
},
coverageReporter: {
dir: require('path').join(__dirname, './coverage/Angular-UrbanBazaar'),
subdir: '.',
reporters: [
{ type: 'html' },
{ type: 'text-summary' }
]
},
reporters: ['progress', 'kjhtml'],
port: 9876,
colors: true,
logLevel: config.LOG_INFO,
autoWatch: true,
browsers: ['Chrome'],
singleRun: false,
restartOnFileChange: true
});
};

12155
Angular-UrbanBazaar/package-lock.json
File diff suppressed because it is too large
View File

42
Angular-UrbanBazaar/package.json

@ -0,0 +1,42 @@
{
"name": "angular-urban-bazaar",
"version": "0.0.0",
"scripts": {
"ng": "ng",
"start": "ng serve",
"build": "ng build",
"watch": "ng build --watch --configuration development",
"test": "ng test"
},
"private": true,
"dependencies": {
"@angular/animations": "~12.1.1",
"@angular/cdk": "^12.2.6",
"@angular/common": "~12.1.1",
"@angular/compiler": "~12.1.1",
"@angular/core": "~12.1.1",
"@angular/flex-layout": "^12.0.0-beta.35",
"@angular/forms": "~12.1.1",
"@angular/material": "^12.2.6",
"@angular/platform-browser": "~12.1.1",
"@angular/platform-browser-dynamic": "~12.1.1",
"@angular/router": "~12.1.1",
"rxjs": "~6.6.0",
"tslib": "^2.2.0",
"zone.js": "~0.11.4"
},
"devDependencies": {
"@angular-devkit/build-angular": "^12.1.4",
"@angular/cli": "~12.1.1",
"@angular/compiler-cli": "~12.1.1",
"@types/jasmine": "~3.6.0",
"@types/node": "^12.11.1",
"jasmine-core": "~3.7.0",
"karma": "~6.3.0",
"karma-chrome-launcher": "~3.1.0",
"karma-coverage": "~2.0.3",
"karma-jasmine": "~4.0.0",
"karma-jasmine-html-reporter": "^1.5.0",
"typescript": "~4.3.2"
}
}

19
Angular-UrbanBazaar/proxy.config.json

@ -0,0 +1,19 @@
{
"/products":{
"target":"http://10.3.117.5:8014",
"secure":false
},
"/user":{
"target":"http://10.3.117.5:8011",
"secure":false
},
"/orders":{
"target":"http://10.3.117.7:8009",
"secure":false
},
"/cart":{
"target":"http://10.3.117.7:8010",
"secure":false
}
}

31
Angular-UrbanBazaar/src/app/app-routing.module.ts

@ -0,0 +1,31 @@
import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { LoginComponent } from './auth/login/login.component';
import { SignUpComponent } from './auth/sign-up/sign-up.component';
import { CartComponent } from './components/cart/cart.component';
import { HomeComponent } from './components/home/home.component';
import { MemberlistComponent } from './components/memberlist/memberlist.component';
import { UserProfileDetailsComponent } from './components/user-profile-details/user-profile-details.component';
const routes: Routes = [
{ path: '', component: LoginComponent},
{ path: 'login', component: LoginComponent},
{ path: 'signup', component: SignUpComponent},
{ path: 'user-profile-details', component: UserProfileDetailsComponent},
{ path: 'memberlist', component: MemberlistComponent},
{ path: 'showCart', component: CartComponent},
{ path: 'home', component: HomeComponent,
children: [
{ path: 'user-profile-details', component: UserProfileDetailsComponent, outlet: 'user'},
{ path: 'memberlist', component: MemberlistComponent, outlet: 'member'}
]
}
];
@NgModule({
imports: [RouterModule.forRoot(routes ,{ useHash: true })],
exports: [RouterModule]
})
export class AppRoutingModule { }

0
Angular-UrbanBazaar/src/app/app.component.css

3
Angular-UrbanBazaar/src/app/app.component.html

@ -0,0 +1,3 @@
<app-page-nav-bar></app-page-nav-bar>
<!-- <app-home></app-home> -->
<router-outlet></router-outlet>

35
Angular-UrbanBazaar/src/app/app.component.spec.ts

@ -0,0 +1,35 @@
import { TestBed } from '@angular/core/testing';
import { RouterTestingModule } from '@angular/router/testing';
import { AppComponent } from './app.component';
describe('AppComponent', () => {
beforeEach(async () => {
await TestBed.configureTestingModule({
imports: [
RouterTestingModule
],
declarations: [
AppComponent
],
}).compileComponents();
});
it('should create the app', () => {
const fixture = TestBed.createComponent(AppComponent);
const app = fixture.componentInstance;
expect(app).toBeTruthy();
});
it(`should have as title 'Angular-UrbanBazaar'`, () => {
const fixture = TestBed.createComponent(AppComponent);
const app = fixture.componentInstance;
expect(app.title).toEqual('Angular-UrbanBazaar');
});
it('should render title', () => {
const fixture = TestBed.createComponent(AppComponent);
fixture.detectChanges();
const compiled = fixture.nativeElement;
expect(compiled.querySelector('.content span').textContent).toContain('Angular-UrbanBazaar app is running!');
});
});

10
Angular-UrbanBazaar/src/app/app.component.ts

@ -0,0 +1,10 @@
import { Component } from '@angular/core';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
title = 'Angular-UrbanBazaar';
}

50
Angular-UrbanBazaar/src/app/app.module.ts

@ -0,0 +1,50 @@
import { NgModule } from '@angular/core';
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
import { BrowserModule } from '@angular/platform-browser';
import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';
import { HttpClientModule } from '@angular/common/http';
import { UserProfileDetailsComponent } from './components/user-profile-details/user-profile-details.component';
import { PageNavBarComponent } from './components/page-nav-bar/page-nav-bar.component';
import { HomeComponent } from './components/home/home.component';
import { CartComponent } from './components/cart/cart.component';
import { MatInputModule } from '@angular/material/input';
import { MatFormFieldModule } from '@angular/material/form-field';
import { MatCardModule } from '@angular/material/card';
import { MatButtonModule } from '@angular/material/button';
import { MatDividerModule } from '@angular/material/divider';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import { FlexLayoutModule } from '@angular/flex-layout';
import { LoginComponent } from './auth/login/login.component';
import { SignUpComponent } from './auth/sign-up/sign-up.component';
import { MemberlistComponent } from './components/memberlist/memberlist.component';
@NgModule({
declarations: [
AppComponent,
UserProfileDetailsComponent,
PageNavBarComponent,
HomeComponent,
CartComponent,
LoginComponent,
SignUpComponent,
MemberlistComponent,
],
imports: [
BrowserModule,
BrowserAnimationsModule,
AppRoutingModule,
FormsModule,
ReactiveFormsModule,
FlexLayoutModule,
HttpClientModule,
MatFormFieldModule,
MatInputModule,
MatCardModule,
MatButtonModule,
MatDividerModule,
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }

21
Angular-UrbanBazaar/src/app/auth/login/login.component.css

@ -0,0 +1,21 @@
body {
background-color: beige;
padding: 10px 10px 10px 10px;
}
.login-main {
margin-top: 10%;
}
mat-card {
min-width: 30%;
max-width: 50%;
}
.main-div {
height: 100vh;
display: flex;
justify-content: center;
align-items: center;
text-align: center;
}

34
Angular-UrbanBazaar/src/app/auth/login/login.component.html

@ -0,0 +1,34 @@
<body>
<div class="main-div">
<mat-card>
<mat-card-header>
<mat-card-title>Welcome to Urban Bazaar !!!</mat-card-title>
</mat-card-header>
<div style="text-align: center">
<img src="/assets/Images/Logo.png" alt="Logo" />
</div>
<mat-card-content fxLayout="column">
<mat-form-field>
<input matInput placeholder="Username" [formControl]="username" />
</mat-form-field>
<mat-form-field>
<input type="password" matInput placeholder="Password" [formControl]="password" />
</mat-form-field>
<span style="color: red;">{{errorMessage}}</span>
<button mat-raised-button color="primary" (click)="userLogin()">
Login
</button>
<a href="#" style="text-align: center; padding-top: 8px;">Forgotten password?</a>
</mat-card-content>
<mat-divider></mat-divider>
<mat-card-actions>
<button mat-raised-button color="primary" (click)="signup()">
Create a new Account
</button>
</mat-card-actions>
</mat-card>
</div>
</body>

25
Angular-UrbanBazaar/src/app/auth/login/login.component.spec.ts

@ -0,0 +1,25 @@
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { LoginComponent } from './login.component';
describe('LoginComponent', () => {
let component: LoginComponent;
let fixture: ComponentFixture<LoginComponent>;
beforeEach(async () => {
await TestBed.configureTestingModule({
declarations: [ LoginComponent ]
})
.compileComponents();
});
beforeEach(() => {
fixture = TestBed.createComponent(LoginComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});

47
Angular-UrbanBazaar/src/app/auth/login/login.component.ts

@ -0,0 +1,47 @@
import { Route } from '@angular/compiler/src/core';
import { Component, OnInit } from '@angular/core';
import { FormControl, FormGroup } from '@angular/forms';
import { Router } from '@angular/router';
import { Observable } from 'rxjs';
import { Login } from 'src/app/models/login';
import { User } from 'src/app/models/user';
import { UserService } from 'src/app/services/user.service';
@Component({
selector: 'app-login',
templateUrl: './login.component.html',
styleUrls: ['./login.component.css'],
})
export class LoginComponent implements OnInit {
username = new FormControl();
password = new FormControl();
responseMessage: string = '';
temp: Observable<User>;
errorMessage: string = '';
constructor(private _userService: UserService, private router: Router) {}
signup() {
this.router.navigateByUrl('/signup');
}
userLogin() {
let user: Login = {
userfirstname: this.username.value,
userpassword: this.password.value,
};
this.temp = this._userService.findUserByUsername(this.username.value);
this.temp.subscribe((v) => {
if (v.userpassword == this.password.value) {
this.temp.subscribe((v) => (this._userService.currentUser = v));
this.router.navigateByUrl('/home');
alert('Login Successfull !!');
} else {
this.errorMessage = 'Wrong Password.';
alert('Login falied !!');
}
});
}
ngOnInit(): void {}
}

0
Angular-UrbanBazaar/src/app/auth/sign-up/sign-up.component.css

83
Angular-UrbanBazaar/src/app/auth/sign-up/sign-up.component.html

@ -0,0 +1,83 @@
<!-- <div >
<app-page-nav-bar></app-page-nav-bar>
</div> -->
<p style="text-align:center;">Please provide your details to signup with Urban Bazaar</p>
<form #signupForm="ngForm" style="text-align:center;" (ngSubmit)="signup(signupForm)">
User UserEmail:
<input type="text" name="useremail" [(ngModel)]="user.useremail" required #useremail="ngModel" />
<br/><br/>
<div *ngIf="useremail.invalid && signupForm.submitted && !isFormSubmitted">
<h6 style="color: red">Please Enter User Email Id...</h6>
</div>
<br/>
User Password :
<input type="password" name="userpassword" [(ngModel)]="user.userpassword" required #userpassword="ngModel" />
<br/><br/>
<div *ngIf="userpassword.invalid && signupForm.submitted && !isFormSubmitted">
<h6 style="color: red">Please Enter User Password...</h6>
</div>
<br/>
User First Name :
<input type="text" name="userfirstname" [(ngModel)]="user.userfirstname" required #userfirstname="ngModel" />
<br/><br/>
<div *ngIf="userfirstname.invalid && signupForm.submitted && !isFormSubmitted">
<h6 style="color: red">Please Enter User First Name...</h6>
</div>
<br/>
User Last Name :
<input type="text" name="userlastname" [(ngModel)]="user.userlastname"
required #userlastname="ngModel" />
<br/><br/>
<div *ngIf="userlastname.invalid && signupForm.submitted && !isFormSubmitted">
<h6 style="color: red">Please Enter User Last Name...</h6>
</div>
<br/>
User City :
<input type="text" name="usercity" [(ngModel)]="user.usercity" required #usercity="ngModel" />
<br/><br/>
<div *ngIf="usercity.invalid && signupForm.submitted && !isFormSubmitted">
<h6 style="color: red">Please Enter UserCity...</h6>
</div>
<br/>
User State :
<input type="text" name="userstate" [(ngModel)]="user.userstate" required #userstate="ngModel" />
<br/><br/>
<div *ngIf="userstate.invalid && signupForm.submitted && !isFormSubmitted">
<h6 style="color: red">Please Enter UserState...</h6>
</div>
<br/>
User Zip :
<input type="text" name="userzip" [(ngModel)]="user.userzip" required #userzip="ngModel" />
<br/><br/>
<div *ngIf="userzip.invalid && signupForm.submitted && !isFormSubmitted">
<h6 style="color: red">Please Enter User Zip...</h6>
</div>
<br/>
User Phone Number :
<input type="text" name="userphone" [(ngModel)]="user.userphone" required #userphone="ngModel" />
<br/><br/>
<div *ngIf="userphone.invalid && signupForm.submitted && !isFormSubmitted">
<h6 style="color: red">Please Enter User Number...</h6>
</div>
<br/>
User Address :
<input type="text" name="useraddress" [(ngModel)]="user.useraddress" required #useraddress="ngModel" />
<br/><br/>
<div *ngIf="useraddress.invalid && signupForm.submitted && !isFormSubmitted">
<h6 style="color: red">Please Enter User Address...</h6>
</div>
<br/>
User Address2 :
<input type="text" name="useraddress2" [(ngModel)]="user.useraddress2" required #useraddress2="ngModel" />
<br/><br/>
<div *ngIf="useraddress2.invalid && signupForm.submitted && !isFormSubmitted">
<h6 style="color: red">Please Enter User Address2...</h6>
</div>
<br/>
<input type="Submit" value="Submit" />
</form>
<!-- <div style="text-align:center;">
<a [routerLink]="['user-show']">UserDetails</a>
</div> -->

25
Angular-UrbanBazaar/src/app/auth/sign-up/sign-up.component.spec.ts

@ -0,0 +1,25 @@
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { SignUpComponent } from './sign-up.component';
describe('SignUpComponent', () => {
let component: SignUpComponent;
let fixture: ComponentFixture<SignUpComponent>;
beforeEach(async () => {
await TestBed.configureTestingModule({
declarations: [ SignUpComponent ]
})
.compileComponents();
});
beforeEach(() => {
fixture = TestBed.createComponent(SignUpComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});

37
Angular-UrbanBazaar/src/app/auth/sign-up/sign-up.component.ts

@ -0,0 +1,37 @@
import { Component, OnInit } from '@angular/core';
import { NgForm } from '@angular/forms';
import { Observable } from 'rxjs';
import { User } from 'src/app/models/user';
import { UserService } from 'src/app/services/user.service';
@Component({
selector: 'app-sign-up',
templateUrl: './sign-up.component.html',
styleUrls: ['./sign-up.component.css'],
})
export class SignUpComponent implements OnInit {
user: User;
tys: string = 't';
temp: Observable<User>;
isFormSubmitted: boolean;
public signup(signupForm: NgForm) {
if (signupForm.invalid) {
alert('Kindly enter all details');
return;
}
this.isFormSubmitted = true;
this._userservice.addUser(this.user).subscribe((x) => {
this.tys = 'y';
alert('Signup Successful');
if (this.tys == 't') alert('not');
});
}
constructor(private _userservice: UserService) {
this.user = new User();
this.isFormSubmitted = false;
}
ngOnInit(): void {}
}

36
Angular-UrbanBazaar/src/app/components/cart/cart.component.css

@ -0,0 +1,36 @@
.card
{
height: 60vh;
margin: 25px;
padding: 25px;
}
.center{
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%,-50%);
text-align: center;
}
h4,h6{
font-weight: 400;
}
.shopNow{
padding: 5%;
background-color: rgb(79 79 243);
color: aliceblue;
border-radius: 15px;
border-color: white;
}
.card-table{
position: relative;
display: flex;
flex-direction: column;
align-items: center;
}
.CartButtons{
border-radius: 15px;
border-color:antiquewhite ;
background-color: beige;
}

51
Angular-UrbanBazaar/src/app/components/cart/cart.component.html

@ -0,0 +1,51 @@
<ng-container *ngIf="cartdetails.length !=0">
<div class="container">
<div class="card-table">
<div class="card-product">
<div class="table tabe-responsive">
<thead>
<tr>
<th>S.No</th>
<th>ProductName</th>
<th>ProductPrice</th>
<th>Action</th>
</tr>
</thead>
<tbody>
<tr *ngFor="let c of cartdetails; let i = index">
<td>{{i+1}}</td>
<td>{{c.productname}}</td>
<td>{{c.productprice}}</td>
<td>
<button class="CartButtons" (click)="removeItem(c.cartid)">Delete</button>
</td>
</tr>
<tr>
<td colspan="4"></td>
<td><button (click)=emptyCart() class="CartButtons">Empty Cart</button></td>
<td><button routerLink='/home' class="CartButtons">Shop More</button></td>
<td><button class="CartButtons">Checkout</button></td>
<!-- <td><strong>Grand Total : Rs.{{grandTotal}}</strong></td> -->
</tr>
</tbody>
</div>
</div>
</div>
</div>
</ng-container>
<ng-container *ngIf="cartdetails.length==0">
<div class="container">
<div class="card">
<h5 class="card-title">My Cart</h5>
</div>
<div class="center">
<img src="https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcT9q9U7YaUc27iaqP1bbyD3g6GSLqlRmAFbeQ&usqp=CAU"
alt="">
<h4>Your cart is empty!</h4>
<h6>Add item to it now</h6>
<button class="shopNow" routerLink='/home'>Shop Now</button>
</div>
</div>
</ng-container>

25
Angular-UrbanBazaar/src/app/components/cart/cart.component.spec.ts

@ -0,0 +1,25 @@
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { CartComponent } from './cart.component';
describe('CartComponent', () => {
let component: CartComponent;
let fixture: ComponentFixture<CartComponent>;
beforeEach(async () => {
await TestBed.configureTestingModule({
declarations: [ CartComponent ]
})
.compileComponents();
});
beforeEach(() => {
fixture = TestBed.createComponent(CartComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});

59
Angular-UrbanBazaar/src/app/components/cart/cart.component.ts

@ -0,0 +1,59 @@
import { Component, OnInit } from '@angular/core';
import { Observable } from 'rxjs';
import { Cart } from 'src/app/models/cart';
import { Product } from 'src/app/models/product';
import { User } from 'src/app/models/user';
import { CartService } from 'src/app/services/cart.service';
import { UserService } from 'src/app/services/user.service';
@Component({
selector: 'app-cart',
templateUrl: './cart.component.html',
styleUrls: ['./cart.component.css']
})
export class CartComponent implements OnInit {
public cartdetails:Cart[];
constructor(private cartservice:CartService,private userservice:UserService) {
// this.cartdetails = this.cartservice.showCart();
}
ngOnInit(): void {
this.cartservice.showCart()
.subscribe(res=>{
this.cartdetails = res;
// this.grandTotal = this.cartservice.getTotalPrice();
})
// let uid = this.userservice.currentUser.userid;
// this.cartservice.showCart(uid).subscribe(data1=>{
// this.cartNo = data1.length;
// this.cartdetails = data1;
// this.cartdetails.forEach((i,index)=>{
// this.grandTotal = this.
// })
// })
}
removeItem(id:number){
this.cartservice.deleteCart(id).subscribe(a=>{
this.cartdetails.forEach((i,index)=>{
if(i.cartid == id)
{
this.cartdetails.splice(index,1)
}
})
});
}
emptyCart()
{
this.cartservice.deleteAll().subscribe(b=>{
this.cartdetails.forEach((i,index)=>{
this.cartdetails.splice(index);
})
});
}
}

43
Angular-UrbanBazaar/src/app/components/home/home.component.css

@ -0,0 +1,43 @@
body {
padding-top: 10px;
padding-left: 10px;
padding-right: 10px;
padding-bottom: 10px;
}
.showCart{
margin-left: 1250px;
border-radius: 15px;
padding: 10px;
margin-top: 10px;
border-color: antiquewhite;
}
.AddToCart{
border-radius: 10px;
border-color: antiquewhite;
color: rgb(0, 0, 0);
background-color: rgb(248, 229, 247);
font-weight: 600;
}
.card{
max-width: 300px;
border-width: 1px;
border-color:antiquewhite;
text-align: center;
margin-top: 12px;
font-family: Arial, Helvetica, sans-serif;
border-radius: 12px;
box-shadow: 0.5em;
}
.price {
color: grey;
font-size: 16px;
}
.cardParent{
display: flex;
justify-content: space-between;
flex-grow:1;
flex-wrap: wrap;
}

23
Angular-UrbanBazaar/src/app/components/home/home.component.html

@ -0,0 +1,23 @@
<body>
<button style="shape-outside: circle();color:forestgreen;
background-color: white; border-color: forestgreen;" class="EditProfile" (click)=EditProfile()>Edit
Profile</button> &nbsp;
<button style="shape-outside: circle();color: forestgreen; background-color: white; border-color: forestgreen;" class="Members List of Curent User" (click)=Members()>Members List of Curent User</button>
<br /><br />
<form class="form-inline my-2 my-lg-0">
<input class="form-control mr-sm-2" type="text" [(ngModel)]="searchValue" id="searchValue" [ngModelOptions]="{standalone: true}" placeholder="Search" aria-label="Search">
<button class="btn btn-outline-success my-2 my-sm-0" type="submit" (click)="searchProduct()">Search</button>
</form>
<button class="showCart" (click)="showCart()">Show Cart</button>
<div class="cardParent">
<div class="card" *ngFor="let i of Searchedproducts">
<img src="{{i.productimage}}" style="width:85%">
<h5>{{i.productname}}</h5>
<p class="price">Rs. {{i.productprice}}</p>
<p><button class="AddToCart" (click)=addCart(i)>Add to Cart</button></p>
</div>
</div>
</body>

25
Angular-UrbanBazaar/src/app/components/home/home.component.spec.ts

@ -0,0 +1,25 @@
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { HomeComponent } from './home.component';
describe('HomeComponent', () => {
let component: HomeComponent;
let fixture: ComponentFixture<HomeComponent>;
beforeEach(async () => {
await TestBed.configureTestingModule({
declarations: [ HomeComponent ]
})
.compileComponents();
});
beforeEach(() => {
fixture = TestBed.createComponent(HomeComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});

62
Angular-UrbanBazaar/src/app/components/home/home.component.ts

@ -0,0 +1,62 @@
import { Component, OnInit } from '@angular/core';
import { ProductService } from './../../services/product.service';
import { Product } from './../../models/product';
import { Router } from '@angular/router';
import { CartService } from 'src/app/services/cart.service';
import { Cart } from 'src/app/models/cart';
import { UserService } from 'src/app/services/user.service';
@Component({
selector: 'app-home',
templateUrl: './home.component.html',
styleUrls: ['./home.component.css'],
})
export class HomeComponent implements OnInit {
public products: Product[];
public Searchedproducts: Product[];
searchValue: string = '';
cartNo: number = 0;
constructor(
private productservice: ProductService,
private router: Router,
private cartservice: CartService,
private userservice: UserService
) { }
public showCart() {
this.router.navigateByUrl('/showCart');
}
addCart(item: any) {
let cart = new Cart();
cart.productid = item.productid;
cart.userid = this.userservice.currentUser.userid;
cart.productprice = item.productprice;
cart.productname = item.productname;
cart.productcategoryid = item.productcategoryid;
this.cartservice.addtoCart(cart).subscribe();
}
searchProduct() {
if (this.searchValue == '') {
this.Searchedproducts = this.products;
} else {
this.Searchedproducts = this.products.filter((p) =>
p.productname.toLocaleLowerCase().includes(this.searchValue)
);
}
}
EditProfile() {
this.router.navigateByUrl('/user-profile-details');
}
Members() {
this.router.navigateByUrl('/memberlist');
}
ngOnInit(): void {
this.productservice.showAllProduct().subscribe((res) => {
this.products = res;
this.Searchedproducts = res;
});
}
}

0
Angular-UrbanBazaar/src/app/components/memberlist/memberlist.component.css

82
Angular-UrbanBazaar/src/app/components/memberlist/memberlist.component.html

@ -0,0 +1,82 @@
<form #addmemForm="ngForm" style="text-align:center;" (ngSubmit)="add(addmemForm)">
<br/>
UserId:
<input type="text" name="userid"[(ngModel)]="userid" value="{{userid}}" [disabled]=true>
<br/>
<br/>
Member Name:&nbsp;&nbsp;
<input type="text" name="membername"[(ngModel)]="mem.membername" required #membername="ngModel" />
<br/><br/>
<div *ngIf="membername.invalid && addmemForm.submitted && !isFormSubmitted">
<h6 style="color: red">Please Enter Membername...</h6>
</div>
<br/>
Member Door Number :&nbsp;&nbsp;
<input type="text" name="memberdoornumber"[(ngModel)]="mem.memberdoornumber" required #memberdoornumber="ngModel" />
<br/><br/>
<div *ngIf="membername.invalid && addmemForm.submitted && !isFormSubmitted">
<h6 style="color: red">Please Enter MemberDoorNumber...</h6>
</div>
<br/>
Member Phone Number:&nbsp;&nbsp;
<input type="text" name="memberphone"[(ngModel)]="mem.memberphone" required #memberphone="ngModel" />
<br/><br/>
<div *ngIf="memberphone.invalid && addmemForm.submitted && !isFormSubmitted">
<h6 style="color: red">Please Enter Mobile number...</h6>
</div>
<br/>
<!-- Flat No/House No:&nbsp;&nbsp;
<input type="text" name="address"[(ngModel)]="mem.address" required #address="ngModel"/>
<br/><br/>
<div *ngIf="address.invalid && addmemForm.submitted && !isFormSubmitted">
<h6 style="color: red">Please Enter User Flat No/House No..</h6>
</div>
<br/> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -->
<input type="submit" style="text-align:center;background-color:dimgray;"name="Submit"/>
</form>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<button style="text-align:center;background-color:dimgray;"class="btn" (click)="enable()">Edit</button> <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Members Information
<div style="text-align:center;" *ngFor="let v of currentUser | async">
<form #updateForm="ngForm" style="text-align:center;" (ngSubmit)="update(updateForm,v)" >
<br/>
Member Name:&nbsp;&nbsp;
<input type="text" name="membername"[(ngModel)]="v.membername" value="{{v.membername}}" [disabled]='toggleButton'>
<br/><br/>
Mobile Number:&nbsp;&nbsp;
<input type="text" name="memberphone"[(ngModel)]="v.memberphone" value="{{v.memberphone}}" [disabled]='toggleButton'>
<br/><br/>
<!-- Flat No/House No:&nbsp;&nbsp;
<input type="text" name="address"[(ngModel)]="v.address" value="{{v.address}}" [disabled]='toggleButton'>
<br/><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -->
<input type="submit" style="text-align:center;background-color:dimgray;"name="Save"/>
<br/> <br/>
<button type="button" style="text-align:center;background-color:dimgray;" cls="btn" (click)="delete(updateForm,v)">Delete
</button> <!-- <button style="text-align:center;background-color:dimgray;"class="btn" (onclick)="delete(updateForm,v)">Delete</button> <br> -->
</form>
</div>
<!-- </body>
<table border="3" align="center">
<tr>
<th>Vendor Id</th>
<th>Vendor Name</th>
<th>Phone Number</th>
</tr>
<tr *ngFor="let v of currentUser | async">
<td>{{v.memberid}}</td>
<td>{{v.membername}} </td>
<td>{{v.memberphone}} </td>
</tr>
</table> -->

25
Angular-UrbanBazaar/src/app/components/memberlist/memberlist.component.spec.ts

@ -0,0 +1,25 @@
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { MemberlistComponent } from './memberlist.component';
describe('MemberlistComponent', () => {
let component: MemberlistComponent;
let fixture: ComponentFixture<MemberlistComponent>;
beforeEach(async () => {
await TestBed.configureTestingModule({
declarations: [ MemberlistComponent ]
})
.compileComponents();
});
beforeEach(() => {
fixture = TestBed.createComponent(MemberlistComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});

74
Angular-UrbanBazaar/src/app/components/memberlist/memberlist.component.ts

@ -0,0 +1,74 @@
import { Component, OnInit } from '@angular/core';
import { NgForm } from '@angular/forms';
import { Observable } from 'rxjs';
import { MemberUser } from 'src/app/models/member-user';
import { MemberUserService } from 'src/app/services/member-user.service';
import { UserService } from 'src/app/services/user.service';
@Component({
selector: 'app-memberlist',
templateUrl: './memberlist.component.html',
styleUrls: ['./memberlist.component.css'],
})
export class MemberlistComponent implements OnInit {
currentUser: Observable<MemberUser[]>;
member: MemberUser;
userid: number = this._userservice.currentUser.userid;
public toggleButton: boolean = false;
mem: MemberUser;
isFormSubmitted: boolean = false;
constructor(
private _memberService: MemberUserService,
private _userservice: UserService
) {
this.member = new MemberUser();
this.mem = new MemberUser();
this.isFormSubmitted = false;
this.toggleButton = true;
this.currentUser = this._memberService.searchMembersbyUser(
this._userservice.currentUser.userid
);
this.currentUser.subscribe();
}
public add(addmemForm: NgForm) {
this.mem.userid = this._userservice.currentUser.userid;
if (addmemForm.invalid) {
alert('Kindly enter all details');
return;
}
this.isFormSubmitted = true;
this._memberService.addMemberUser(this.mem).subscribe((x) => {
alert('Member added Successfuly');
});
}
public delete(updateForm: NgForm, v: MemberUser) {
this._memberService.deleteMemberUser(v.memberid).subscribe((x) => {
alert('Member deleted Successfuly');
});
}
public update(updateForm: NgForm, v: MemberUser) {
if (updateForm.invalid) {
return;
}
this._memberService.updateMemberUser(v).subscribe((x) => {
alert(
'Member Id: ' +
v.memberid +
' with MemberName ' +
v.membername +
' is updated'
);
});
}
enable() { this.toggleButton = false; }
disable() { this.toggleButton = true; }
ngOnInit(): void {}
}

99
Angular-UrbanBazaar/src/app/components/page-nav-bar/page-nav-bar.component.css

@ -0,0 +1,99 @@
@import url("//maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css");
.navbar-icon-top .navbar-nav .nav-link > .fa {
position: relative;
width: 36px;
font-size: 24px;
}
.navbar-icon-top .navbar-nav .nav-link > .fa > .badge {
font-size: 0.75rem;
position: absolute;
right: 0;
font-family: sans-serif;
}
.navbar-icon-top .navbar-nav .nav-link > .fa {
top: 3px;
line-height: 12px;
}
.navbar-icon-top .navbar-nav .nav-link > .fa > .badge {
top: -10px;
}
@media (min-width: 576px) {
.navbar-icon-top.navbar-expand-sm .navbar-nav .nav-link {
text-align: center;
display: table-cell;
height: 70px;
vertical-align: middle;
padding-top: 0;
padding-bottom: 0;
}
.navbar-icon-top.navbar-expand-sm .navbar-nav .nav-link > .fa {
display: block;
width: 48px;
margin: 2px auto 4px auto;
top: 0;
line-height: 24px;
}
.navbar-icon-top.navbar-expand-sm .navbar-nav .nav-link > .fa > .badge {
top: -7px;
}
}
@media (min-width: 768px) {
.navbar-icon-top.navbar-expand-md .navbar-nav .nav-link {
text-align: center;
display: table-cell;
height: 70px;
vertical-align: middle;
padding-top: 0;
padding-bottom: 0;
}
.navbar-icon-top.navbar-expand-md .navbar-nav .nav-link > .fa {
display: block;
width: 48px;
margin: 2px auto 4px auto;
top: 0;
line-height: 24px;
}
.navbar-icon-top.navbar-expand-md .navbar-nav .nav-link > .fa > .badge {
top: -7px;
}
}
@media (min-width: 992px) {
.navbar-icon-top.navbar-expand-lg .navbar-nav .nav-link {
text-align: center;
display: table-cell;
height: 70px;
vertical-align: middle;
padding-top: 0;
padding-bottom: 0;
}
.navbar-icon-top.navbar-expand-lg .navbar-nav .nav-link > .fa {
display: block;
width: 48px;
margin: 2px auto 4px auto;
top: 0;
line-height: 24px;
}
.navbar-icon-top.navbar-expand-lg .navbar-nav .nav-link > .fa > .badge {
top: -7px;
}
}
@media (min-width: 1200px) {
.navbar-icon-top.navbar-expand-xl .navbar-nav .nav-link {
text-align: center;
display: table-cell;
height: 70px;
vertical-align: middle;
padding-top: 0;
padding-bottom: 0;
}
.navbar-icon-top.navbar-expand-xl .navbar-nav .nav-link > .fa {
display: block;
width: 48px;
margin: 2px auto 4px auto;
top: 0;
line-height: 24px;
}
.navbar-icon-top.navbar-expand-xl .navbar-nav .nav-link > .fa > .badge {
top: -7px;
}
}

19
Angular-UrbanBazaar/src/app/components/page-nav-bar/page-nav-bar.component.html

@ -0,0 +1,19 @@
<nav class="navbar navbar-expand-lg navbar-light bg-light">
<a class="navbar-brand" href="#">Urban Bazaar</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav mr-auto">
<li class="nav-item active">
<a class="nav-link" href="/home">Home <span class="sr-only">(current)</span></a>
</li>
<li class="nav-item active">
<a class="nav-link" href="/user-profile-details">
Profile <span class="sr-only">(current)</span></a>
</li>
</ul>
</div>
</nav>

25
Angular-UrbanBazaar/src/app/components/page-nav-bar/page-nav-bar.component.spec.ts

@ -0,0 +1,25 @@
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { PageNavBarComponent } from './page-nav-bar.component';
describe('PageNavBarComponent', () => {
let component: PageNavBarComponent;
let fixture: ComponentFixture<PageNavBarComponent>;
beforeEach(async () => {
await TestBed.configureTestingModule({
declarations: [ PageNavBarComponent ]
})
.compileComponents();
});
beforeEach(() => {
fixture = TestBed.createComponent(PageNavBarComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});

15
Angular-UrbanBazaar/src/app/components/page-nav-bar/page-nav-bar.component.ts

@ -0,0 +1,15 @@
import { Component, OnInit } from '@angular/core';
@Component({
selector: 'app-page-nav-bar',
templateUrl: './page-nav-bar.component.html',
styleUrls: ['./page-nav-bar.component.css']
})
export class PageNavBarComponent implements OnInit {
constructor() { }
ngOnInit(): void {
}
}

22
Angular-UrbanBazaar/src/app/components/user-profile-details/user-profile-details.component.css

@ -0,0 +1,22 @@
body {
padding-left: 10px;
color: #212121;
}
div {
padding: 24px 32px 0;
box-sizing: border-box;
margin: 0;
}
._3E8aIl {
background-color: #fff;
border-radius: 2px;
box-shadow: 0 2px 4px 0 rgba(0,0,0,.08);
}
._3X2gOt {
vertical-align: middle;
width: 50px;
height: 50px;
}

95
Angular-UrbanBazaar/src/app/components/user-profile-details/user-profile-details.component.html

@ -0,0 +1,95 @@
<!-- <p>user-profile-details works!</p>
<body>
<div>
<p>
Personal Information
<button class="btn" (click)="editUserName()">Edit</button> <br>
<input name="firstName" value="{{user.userfirstname}}" disabled=""> &nbsp;
<input name="lastName" value="{{user.userlastname}}" disabled="">
</p>
<p>
Email Address
<button class="btn" (click)="editEmail()">Edit</button>
<button class="btn" (click)="editPassword()">Change Password</button> <br>
<input name="firstName" value="{{user.useremail}}" disabled="">
</p>
<p>
Mobile Number
<button class="btn" (click)="editPhone()">Edit</button> <br>
<input type="number" name="firstName" value="{{user.userphone}}" disabled="">
</p>
<br>
<h4>FAQs</h4>
<b>What happens when I update my email address (or mobile number)?</b> <br>
Your login email id (or mobile number) changes, likewise. You'll receive all your account related communication on your updated email address (or mobile number). <br><br>
<b>When will my UrbanBazaar account be updated with the new email address (or mobile number)?</b> <br>
It happens as soon as you confirm the verification code sent to your email (or mobile) and save the changes. <br><br>
<b>What happens to my existing UrbanBazaar account when I update my email address (or mobile number)?</b> <br>
Updating your email address (or mobile number) doesn't invalidate your account. Your account remains fully functional.
You'll continue seeing your Order history, saved information and personal details. <br><br>
<b>Does my Seller account get affected when I update my email address?</b> <br>
UrbanBazaar has a 'single sign-on' policy.
Any changes will reflect in your Seller account also.
</div>
<br><br><br>
</body> -->
<body>
<!-- <div style="text-align:center;">
<a [routerLink]="['changepass']">Change Password</a> <br/>
<br/> -->
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<button style="text-align:center;background-color:dimgray;"class="btn" (click)="enable()">Edit</button> <br>
<form #updateForm="ngForm" style="text-align:center;" (ngSubmit)="update(updateForm)">
Personal Information
<br/>
Name:&nbsp;&nbsp;
<input type="text" name="userfirstName" [(ngModel)]="user.userfirstname" value="{{user.userfirstname}}" [disabled]='toggleButton'> &nbsp;&nbsp;
<input type="text" name="userlastName"[(ngModel)]="user.userlastname" value="{{user.userlastname}}" [disabled]='toggleButton'>
<br/><br/>
Mobile Number:&nbsp;&nbsp;
<input type="number" name="userphone"[(ngModel)]="user.userphone" value="{{user.userphone}}" [disabled]='toggleButton'>
<br/><br/>
Address1:&nbsp;&nbsp;
<input type="text"name="useraddress"[(ngModel)]="user.useraddress" value="{{user.useraddress}}"[disabled]='toggleButton'>
<br/><br/>
Address2:&nbsp;&nbsp;
<input type="text"name="useraddress2"[(ngModel)]="user.useraddress2" value="{{user.useraddress2}}"[disabled]='toggleButton'>
<br/><br/>
City:&nbsp;&nbsp;
<input type="text"name="usercity"[(ngModel)]="user.usercity" value="{{user.usercity}}"[disabled]='toggleButton'>
<br/><br/>
State:&nbsp;&nbsp;
<input type="text"name="userstate" [(ngModel)]="user.userstate" value="{{user.userstate}}"[disabled]='toggleButton'>
<br/><br/>
Zip:&nbsp;&nbsp;
<input type="text"name="userzip" [(ngModel)]="user.userzip" value="{{user.userzip}}"[disabled]='toggleButton'>
<br/><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <input type="submit" style="text-align:center;background-color:dimgray;"name="Save"/>
</form>
<br>
<h4>FAQs</h4>
<b>What happens when I update my email address (or mobile number)?</b> <br>
Your login email id (or mobile number) changes, likewise. You'll receive all your account related communication on your updated email address (or mobile number). <br><br>
<b>When will my UrbanBazaar account be updated with the new email address (or mobile number)?</b> <br>
It happens as soon as you confirm the verification code sent to your email (or mobile) and save the changes. <br><br>
<b>What happens to my existing UrbanBazaar account when I update my email address (or mobile number)?</b> <br>
Updating your email address (or mobile number) doesn't invalidate your account. Your account remains fully functional.
You'll continue seeing your Order history, saved information and personal details. <br><br>
<b>Does my Seller account get affected when I update my email address?</b> <br>
UrbanBazaar has a 'single sign-on' policy.
Any changes will reflect in your Seller account also.
<!-- </div> -->
<br><br><br>
</body>

25
Angular-UrbanBazaar/src/app/components/user-profile-details/user-profile-details.component.spec.ts

@ -0,0 +1,25 @@
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { UserProfileDetailsComponent } from './user-profile-details.component';
describe('UserProfileDetailsComponent', () => {
let component: UserProfileDetailsComponent;
let fixture: ComponentFixture<UserProfileDetailsComponent>;
beforeEach(async () => {
await TestBed.configureTestingModule({
declarations: [ UserProfileDetailsComponent ]
})
.compileComponents();
});
beforeEach(() => {
fixture = TestBed.createComponent(UserProfileDetailsComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});

45
Angular-UrbanBazaar/src/app/components/user-profile-details/user-profile-details.component.ts

@ -0,0 +1,45 @@
import { Component, OnInit } from '@angular/core';
import { NgForm } from '@angular/forms';
import { Observable } from 'rxjs';
import { User } from 'src/app/models/user';
import { UserService } from 'src/app/services/user.service';
@Component({
selector: 'app-user-profile-details',
templateUrl: './user-profile-details.component.html',
styleUrls: ['./user-profile-details.component.css'],
})
export class UserProfileDetailsComponent implements OnInit {
currentUser: Observable<User>;
user: User;
public toggleButton: boolean;
// /isFormSubmitted : boolean;
constructor(private _userService: UserService) {
this.user = new User();
this.toggleButton = true;
this.currentUser = this._userService.searchUser(
this._userService.currentUser.userid
);
this.currentUser.subscribe((userold: User) => (this.user = userold));
}
public update(vendorForm: NgForm) {
if (vendorForm.invalid) {
return;
}
// this.isFormSubmitted=true;
this._userService.updateUser(this.user).subscribe((x) => {});
alert('Record Updated');
}
enable() {
this.toggleButton = false;
}
disable() {
this.toggleButton = true;
}
ngOnInit(): void {}
}

7
Angular-UrbanBazaar/src/app/models/cart.spec.ts

@ -0,0 +1,7 @@
import { Cart } from './cart';
describe('Cart', () => {
it('should create an instance', () => {
expect(new Cart()).toBeTruthy();
});
});

10
Angular-UrbanBazaar/src/app/models/cart.ts

@ -0,0 +1,10 @@
export class Cart {
cartid:number;
productid:number;
userid:number;
productname:string;
productprice:number;
productcategoryid:number;
constructor() {}
}

7
Angular-UrbanBazaar/src/app/models/login.spec.ts

@ -0,0 +1,7 @@
import { Login } from './login';
describe('Login', () => {
it('should create an instance', () => {
expect(new Login()).toBeTruthy();
});
});

6
Angular-UrbanBazaar/src/app/models/login.ts

@ -0,0 +1,6 @@
export class Login {
public userfirstname: string;
public userpassword: string;
constructor() {}
}

7
Angular-UrbanBazaar/src/app/models/member-user.spec.ts

@ -0,0 +1,7 @@
import { MemberUser } from './member-user';
describe('MemberUser', () => {
it('should create an instance', () => {
expect(new MemberUser()).toBeTruthy();
});
});

10
Angular-UrbanBazaar/src/app/models/member-user.ts

@ -0,0 +1,10 @@
export class MemberUser {
public userid: number;
public memberid: number;
public membername: string;
public totalitems: number;
public memberphone: string;
public membertotalamount: number;
public memberdoornumber: number;
constructor() {}
}

7
Angular-UrbanBazaar/src/app/models/orders.spec.ts

@ -0,0 +1,7 @@
import { Orders } from './orders';
describe('Orders', () => {
it('should create an instance', () => {
expect(new Orders()).toBeTruthy();
});
});

20
Angular-UrbanBazaar/src/app/models/orders.ts

@ -0,0 +1,20 @@
export class Orders {
public orderid: number;
public orderuserid: number;
public orderamount: number;
public ordershipaddress: string;
public ordershipaddress2: string;
public ordercity: string;
public orderzip: string;
public orderstate: string;
public ordercountry: string;
public orderphone: string;
public ordershippingcost: number;
public ordertax: number;
public orderemail: string;
public orderdate: Date;
public ordershipped: string;
public ordertrackingnumber: string;
constructor() {}
}

7
Angular-UrbanBazaar/src/app/models/product-category.spec.ts

@ -0,0 +1,7 @@
import { ProductCategory } from './product-category';
describe('ProductCategory', () => {
it('should create an instance', () => {
expect(new ProductCategory()).toBeTruthy();
});
});

6
Angular-UrbanBazaar/src/app/models/product-category.ts

@ -0,0 +1,6 @@
export class ProductCategory {
public categoryid: number;
public categoryname: string;
constructor() {}
}

7
Angular-UrbanBazaar/src/app/models/product.spec.ts

@ -0,0 +1,7 @@
import { Product } from './product';
describe('Product', () => {
it('should create an instance', () => {
expect(new Product()).toBeTruthy();
});
});

9
Angular-UrbanBazaar/src/app/models/product.ts

@ -0,0 +1,9 @@
export class Product {
public productid: number;
public productname: string;
public productprice: number;
public productimage: string;
public productcategoryid: number;
constructor() {}
}

7
Angular-UrbanBazaar/src/app/models/user.spec.ts

@ -0,0 +1,7 @@
import { User } from './user';
describe('User', () => {
it('should create an instance', () => {
expect(new User()).toBeTruthy();
});
});

15
Angular-UrbanBazaar/src/app/models/user.ts

@ -0,0 +1,15 @@
export class User {
public userid: number;
public useremail: string;
public userpassword: string;
public userfirstname: string;
public userlastname: string;
public usercity: string;
public userstate: string;
public userzip: string;
public userphone: string;
public useraddress: string;
public useraddress2: string;
constructor() {}
}

16
Angular-UrbanBazaar/src/app/services/cart.service.spec.ts

@ -0,0 +1,16 @@
import { TestBed } from '@angular/core/testing';
import { CartService } from './cart.service';
describe('CartService', () => {
let service: CartService;
beforeEach(() => {
TestBed.configureTestingModule({});
service = TestBed.inject(CartService);
});
it('should be created', () => {
expect(service).toBeTruthy();
});
});

39
Angular-UrbanBazaar/src/app/services/cart.service.ts

@ -0,0 +1,39 @@
import { HttpClient } from '@angular/common/http';
import { THIS_EXPR, ThrowStmt } from '@angular/compiler/src/output/output_ast';
import { Injectable } from '@angular/core';
import { BehaviorSubject, Observable } from 'rxjs';
import { Cart } from '../models/cart';
import { Product } from '../models/product';
@Injectable({
providedIn: 'root',
})
export class CartService {
private _url: String = 'http://localhost:8014/products';
constructor(private _http: HttpClient) {}
public addtoCart(cart:Cart)
{
return this._http.post(this._url+"/addCart",cart);
}
public showCart():Observable<Cart[]>
{
return this._http.get<Cart[]>(this._url+"/showCart");
}
public deleteCart(pid:number)
{
return this._http.delete<any>(this._url+"/deleteCart/"+pid);
}
public deleteAll()
{
return this._http.delete<any>(this._url+"/deleteAll");
}
}

16
Angular-UrbanBazaar/src/app/services/member-user.service.spec.ts

@ -0,0 +1,16 @@
import { TestBed } from '@angular/core/testing';
import { MemberUserService } from './member-user.service';
describe('MemberUserService', () => {
let service: MemberUserService;
beforeEach(() => {
TestBed.configureTestingModule({});
service = TestBed.inject(MemberUserService);
});
it('should be created', () => {
expect(service).toBeTruthy();
});
});

40
Angular-UrbanBazaar/src/app/services/member-user.service.ts

@ -0,0 +1,40 @@
// import { HttpClient } from '@angular/common/http';
import { Injectable } from '@angular/core';
import { Observable } from 'rxjs';
import { MemberUser } from '../models/member-user';
import { HttpClient } from '@angular/common/http';
@Injectable({
providedIn: 'root',
})
export class MemberUserService {
private _url: String = 'http://localhost:8011/user/';
constructor(private _http: HttpClient) {}
public showAllMemberUsers() {
return this._http.get<MemberUser[]>(this._url + 'showAllMembers');
}
public addMemberUser(member: MemberUser) {
return this._http.post(this._url + 'addMember/', member);
}
public searchMemberUser(memberid: number) {
return this._http.get<MemberUser>(this._url + 'showAllMembers/' + memberid);
}
public searchMembersbyUser(userid: number) {
return this._http.get<MemberUser[]>(
this._url + 'showUserMembers/' + userid
);
}
public deleteMemberUser(memberid: number) {
return this._http.delete(this._url + 'deleteMember/' + memberid);
}
public updateMemberUser(member: MemberUser) {
return this._http.put(this._url + 'updateMember/', member);
}
}

16
Angular-UrbanBazaar/src/app/services/orders.service.spec.ts

@ -0,0 +1,16 @@
import { TestBed } from '@angular/core/testing';
import { OrdersService } from './orders.service';
describe('OrdersService', () => {
let service: OrdersService;
beforeEach(() => {
TestBed.configureTestingModule({});
service = TestBed.inject(OrdersService);
});
it('should be created', () => {
expect(service).toBeTruthy();
});
});

25
Angular-UrbanBazaar/src/app/services/orders.service.ts

@ -0,0 +1,25 @@
import { HttpClient } from '@angular/common/http';
import { Injectable } from '@angular/core';
import { Observable } from 'rxjs';
import { Orders } from '../models/orders';
@Injectable({
providedIn: 'root',
})
export class OrdersService {
private _url: String = 'http://localhost:8009/orders';
constructor(private _http: HttpClient) {}
public addOrder(order: Orders) {
this._http.post(this._url + '/addOrder', order);
}
public findOrder(id: number): Observable<Orders> {
return this._http.get<Orders>(this._url + '/findOrder' + id);
}
public findOrdersByUser(id: number): Observable<Orders[]> {
return this._http.get<Orders[]>(this._url + '/findOrdersByUser' + id);
}
}

16
Angular-UrbanBazaar/src/app/services/product-category.service.spec.ts

@ -0,0 +1,16 @@
import { TestBed } from '@angular/core/testing';
import { ProductCategoryService } from './product-category.service';
describe('ProductCategoryService', () => {
let service: ProductCategoryService;
beforeEach(() => {
TestBed.configureTestingModule({});
service = TestBed.inject(ProductCategoryService);
});
it('should be created', () => {
expect(service).toBeTruthy();
});
});

19
Angular-UrbanBazaar/src/app/services/product-category.service.ts

@ -0,0 +1,19 @@
import { HttpClient } from '@angular/common/http';
import { Injectable } from '@angular/core';
import { Observable } from 'rxjs';
import { ProductCategory } from '../models/product-category';
@Injectable({
providedIn: 'root',
})
export class ProductCategoryService {
private _url: String = 'http://localhost:8007/products';
constructor(private _http: HttpClient) {}
public showAllCategory(): Observable<ProductCategory[]> {
return this._http.get<ProductCategory[]>(
this._url + '/showProductCategory'
);
}
}

16
Angular-UrbanBazaar/src/app/services/product.service.spec.ts

@ -0,0 +1,16 @@
import { TestBed } from '@angular/core/testing';
import { ProductService } from './product.service';
describe('ProductService', () => {
let service: ProductService;
beforeEach(() => {
TestBed.configureTestingModule({});
service = TestBed.inject(ProductService);
});
it('should be created', () => {
expect(service).toBeTruthy();
});
});

22
Angular-UrbanBazaar/src/app/services/product.service.ts

@ -0,0 +1,22 @@
import { HttpClient } from '@angular/common/http';
import { Injectable } from '@angular/core';
import { Observable } from 'rxjs';
import { Product } from '../models/product';
@Injectable({
providedIn: 'root',
})
export class ProductService {
private _url: String = 'http://localhost:8014/products';
search: string;
constructor(private _http: HttpClient) {}
public showAllProduct() : Observable<Product[]> {
return this._http.get<any>(this._url + '/showAllProducts');
}
public searchProduct(name: string): Observable<Product[]> {
return this._http.get<Product[]>(this._url + '/searchProduct/' + name);
}
}

16
Angular-UrbanBazaar/src/app/services/user.service.spec.ts

@ -0,0 +1,16 @@
import { TestBed } from '@angular/core/testing';
import { UserService } from './user.service';
describe('UserService', () => {
let service: UserService;
beforeEach(() => {
TestBed.configureTestingModule({});
service = TestBed.inject(UserService);
});
it('should be created', () => {
expect(service).toBeTruthy();
});
});

39
Angular-UrbanBazaar/src/app/services/user.service.ts

@ -0,0 +1,39 @@
import { Injectable } from '@angular/core';
import { Login } from '../models/login';
import { User } from '../models/user';
import { HttpClient } from '@angular/common/http';
import { Observable } from 'rxjs';
@Injectable({
providedIn: 'root',
})
export class UserService {
currentUser: User;
private _url: string = 'http://localhost:8011/users';
constructor(private _http: HttpClient) {}
public showAllUsers(): Observable<User[]> {
return this._http.get<User[]>(this._url + '/showAllUsers');
}
public addUser(user: User) {
return this._http.post(this._url + '/addUser/', user);
}
public searchUser(userid: number) {
return this._http.get<User>(this._url + '/findUserById/' + userid);
}
public updateUser(user: User) {
return this._http.put(this._url + '/update/', user);
}
public loginUser(user: Login) {
return this._http.post<string>(this._url + '/login/', user);
}
public findUserByUsername(name: string) {
return this._http.get<User>(this._url + '/findUserByName/' + name);
}
}

0
Angular-UrbanBazaar/src/assets/.gitkeep

BIN
Angular-UrbanBazaar/src/assets/Images/Logo.png

Before After
Width: 200  |  Height: 200  |  Size: 8.3 KiB

BIN
Angular-UrbanBazaar/src/assets/Images/download.jpg

Before After
Width: 265  |  Height: 190  |  Size: 12 KiB

3
Angular-UrbanBazaar/src/environments/environment.prod.ts

@ -0,0 +1,3 @@
export const environment = {
production: true
};

16
Angular-UrbanBazaar/src/environments/environment.ts

@ -0,0 +1,16 @@
// This file can be replaced during build by using the `fileReplacements` array.
// `ng build` replaces `environment.ts` with `environment.prod.ts`.
// The list of file replacements can be found in `angular.json`.
export const environment = {
production: false
};
/*
* For easier debugging in development mode, you can import the following file
* to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`.
*
* This import should be commented out in production mode because it will have a negative impact
* on performance if an error is thrown.
*/
// import 'zone.js/plugins/zone-error'; // Included with Angular CLI.

BIN
Angular-UrbanBazaar/src/favicon.ico

Before After
Width: 28  |  Height: 30  |  Size: 948 B

18
Angular-UrbanBazaar/src/index.html

@ -0,0 +1,18 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>AngularUrbanBazaar</title>
<base href="/">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon" type="image/x-icon" href="favicon.ico">
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
<link rel="preconnect" href="https://fonts.gstatic.com">
<link href="https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500&display=swap" rel="stylesheet">
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
</head>
<body class="mat-typography">
<app-root></app-root>
</body>
</html>

12
Angular-UrbanBazaar/src/main.ts

@ -0,0 +1,12 @@
import { enableProdMode } from '@angular/core';
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { AppModule } from './app/app.module';
import { environment } from './environments/environment';
if (environment.production) {
enableProdMode();
}
platformBrowserDynamic().bootstrapModule(AppModule)
.catch(err => console.error(err));

65
Angular-UrbanBazaar/src/polyfills.ts

@ -0,0 +1,65 @@
/**
* This file includes polyfills needed by Angular and is loaded before the app.
* You can add your own extra polyfills to this file.
*
* This file is divided into 2 sections:
* 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers.
* 2. Application imports. Files imported after ZoneJS that should be loaded before your main
* file.
*
* The current setup is for so-called "evergreen" browsers; the last versions of browsers that
* automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera),
* Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile.
*
* Learn more in https://angular.io/guide/browser-support
*/
/***************************************************************************************************
* BROWSER POLYFILLS
*/
/**
* IE11 requires the following for NgClass support on SVG elements
*/
// import 'classlist.js'; // Run `npm install --save classlist.js`.
/**
* Web Animations `@angular/platform-browser/animations`
* Only required if AnimationBuilder is used within the application and using IE/Edge or Safari.
* Standard animation support in Angular DOES NOT require any polyfills (as of Angular 6.0).
*/
// import 'web-animations-js'; // Run `npm install --save web-animations-js`.
/**
* By default, zone.js will patch all possible macroTask and DomEvents
* user can disable parts of macroTask/DomEvents patch by setting following flags
* because those flags need to be set before `zone.js` being loaded, and webpack
* will put import in the top of bundle, so user need to create a separate file
* in this directory (for example: zone-flags.ts), and put the following flags
* into that file, and then add the following code before importing zone.js.
* import './zone-flags';
*
* The flags allowed in zone-flags.ts are listed here.
*
* The following flags will work for all browsers.
*
* (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame
* (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick
* (window as any).__zone_symbol__UNPATCHED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames
*
* in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js
* with the following flag, it will bypass `zone.js` patch for IE/Edge
*
* (window as any).__Zone_enable_cross_context_check = true;
*
*/
/***************************************************************************************************
* Zone JS is required by default for Angular itself.
*/
import 'zone.js'; // Included with Angular CLI.
/***************************************************************************************************
* APPLICATION IMPORTS
*/

4
Angular-UrbanBazaar/src/styles.css

@ -0,0 +1,4 @@
/* You can add global styles to this file, and also import other style files */
html, body { height: 100%; }
body { margin: 0; font-family: Roboto, "Helvetica Neue", sans-serif; }

25
Angular-UrbanBazaar/src/test.ts

@ -0,0 +1,25 @@
// This file is required by karma.conf.js and loads recursively all the .spec and framework files
import 'zone.js/testing';
import { getTestBed } from '@angular/core/testing';
import {
BrowserDynamicTestingModule,
platformBrowserDynamicTesting
} from '@angular/platform-browser-dynamic/testing';
declare const require: {
context(path: string, deep?: boolean, filter?: RegExp): {
keys(): string[];
<T>(id: string): T;
};
};
// First, initialize the Angular testing environment.
getTestBed().initTestEnvironment(
BrowserDynamicTestingModule,
platformBrowserDynamicTesting()
);
// Then we find all the tests.
const context = require.context('./', true, /\.spec\.ts$/);
// And load the modules.
context.keys().map(context);

15
Angular-UrbanBazaar/tsconfig.app.json

@ -0,0 +1,15 @@
/* To learn more about this file see: https://angular.io/config/tsconfig. */
{
"extends": "./tsconfig.json",
"compilerOptions": {
"outDir": "./out-tsc/app",
"types": []
},
"files": [
"src/main.ts",
"src/polyfills.ts"
],
"include": [
"src/**/*.d.ts"
]
}

31
Angular-UrbanBazaar/tsconfig.json

@ -0,0 +1,31 @@
/* To learn more about this file see: https://angular.io/config/tsconfig. */
{
"compileOnSave": false,
"compilerOptions": {
"baseUrl": "./",
"outDir": "./dist/out-tsc",
"forceConsistentCasingInFileNames": true,
"strict": true,
"strictNullChecks": false,
"noImplicitReturns": true,
"noFallthroughCasesInSwitch": true,
"sourceMap": true,
"declaration": false,
"downlevelIteration": true,
"experimentalDecorators": true,
"moduleResolution": "node",
"importHelpers": true,
"target": "es2017",
"module": "es2020",
"lib": [
"es2018",
"dom"
]
},
"angularCompilerOptions": {
"enableI18nLegacyMessageIdFormat": false,
"strictInjectionParameters": true,
"strictInputAccessModifiers": true,
"strictTemplates": true
}
}

18
Angular-UrbanBazaar/tsconfig.spec.json

@ -0,0 +1,18 @@
/* To learn more about this file see: https://angular.io/config/tsconfig. */
{
"extends": "./tsconfig.json",
"compilerOptions": {
"outDir": "./out-tsc/spec",
"types": [
"jasmine"
]
},
"files": [
"src/test.ts",
"src/polyfills.ts"
],
"include": [
"src/**/*.spec.ts",
"src/**/*.d.ts"
]
}

33
UB_ProductServiceProxy/.gitignore

@ -0,0 +1,33 @@
HELP.md
target/
!.mvn/wrapper/maven-wrapper.jar
!**/src/main/**/target/
!**/src/test/**/target/
### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache
### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr
### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/
build/
!**/src/main/**/build/
!**/src/test/**/build/
### VS Code ###
.vscode/

117
UB_ProductServiceProxy/.mvn/wrapper/MavenWrapperDownloader.java

@ -0,0 +1,117 @@
/*
* Copyright 2007-present the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import java.net.*;
import java.io.*;
import java.nio.channels.*;
import java.util.Properties;
public class MavenWrapperDownloader {
private static final String WRAPPER_VERSION = "0.5.6";
/**
* Default URL to download the maven-wrapper.jar from, if no 'downloadUrl' is provided.
*/
private static final String DEFAULT_DOWNLOAD_URL = "https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/"
+ WRAPPER_VERSION + "/maven-wrapper-" + WRAPPER_VERSION + ".jar";
/**
* Path to the maven-wrapper.properties file, which might contain a downloadUrl property to
* use instead of the default one.
*/
private static final String MAVEN_WRAPPER_PROPERTIES_PATH =
".mvn/wrapper/maven-wrapper.properties";
/**
* Path where the maven-wrapper.jar will be saved to.
*/
private static final String MAVEN_WRAPPER_JAR_PATH =
".mvn/wrapper/maven-wrapper.jar";
/**
* Name of the property which should be used to override the default download url for the wrapper.
*/
private static final String PROPERTY_NAME_WRAPPER_URL = "wrapperUrl";
public static void main(String args[]) {
System.out.println("- Downloader started");
File baseDirectory = new File(args[0]);
System.out.println("- Using base directory: " + baseDirectory.getAbsolutePath());
// If the maven-wrapper.properties exists, read it and check if it contains a custom
// wrapperUrl parameter.
File mavenWrapperPropertyFile = new File(baseDirectory, MAVEN_WRAPPER_PROPERTIES_PATH);
String url = DEFAULT_DOWNLOAD_URL;
if(mavenWrapperPropertyFile.exists()) {
FileInputStream mavenWrapperPropertyFileInputStream = null;
try {
mavenWrapperPropertyFileInputStream = new FileInputStream(mavenWrapperPropertyFile);
Properties mavenWrapperProperties = new Properties();
mavenWrapperProperties.load(mavenWrapperPropertyFileInputStream);
url = mavenWrapperProperties.getProperty(PROPERTY_NAME_WRAPPER_URL, url);
} catch (IOException e) {
System.out.println("- ERROR loading '" + MAVEN_WRAPPER_PROPERTIES_PATH + "'");
} finally {
try {
if(mavenWrapperPropertyFileInputStream != null) {
mavenWrapperPropertyFileInputStream.close();
}
} catch (IOException e) {
// Ignore ...
}
}
}
System.out.println("- Downloading from: " + url);
File outputFile = new File(baseDirectory.getAbsolutePath(), MAVEN_WRAPPER_JAR_PATH);
if(!outputFile.getParentFile().exists()) {
if(!outputFile.getParentFile().mkdirs()) {
System.out.println(
"- ERROR creating output directory '" + outputFile.getParentFile().getAbsolutePath() + "'");
}
}
System.out.println("- Downloading to: " + outputFile.getAbsolutePath());
try {
downloadFileFromURL(url, outputFile);
System.out.println("Done");
System.exit(0);
} catch (Throwable e) {
System.out.println("- Error downloading");
e.printStackTrace();
System.exit(1);
}
}
private static void downloadFileFromURL(String urlString, File destination) throws Exception {
if (System.getenv("MVNW_USERNAME") != null && System.getenv("MVNW_PASSWORD") != null) {
String username = System.getenv("MVNW_USERNAME");
char[] password = System.getenv("MVNW_PASSWORD").toCharArray();
Authenticator.setDefault(new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
}
});
}
URL website = new URL(urlString);
ReadableByteChannel rbc;
rbc = Channels.newChannel(website.openStream());
FileOutputStream fos = new FileOutputStream(destination);
fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
fos.close();
rbc.close();
}
}

BIN
UB_ProductServiceProxy/.mvn/wrapper/maven-wrapper.jar

2
UB_ProductServiceProxy/.mvn/wrapper/maven-wrapper.properties

@ -0,0 +1,2 @@
distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.2/apache-maven-3.8.2-bin.zip
wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar

310
UB_ProductServiceProxy/mvnw

@ -0,0 +1,310 @@
#!/bin/sh
# ----------------------------------------------------------------------------
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
# ----------------------------------------------------------------------------
# ----------------------------------------------------------------------------
# Maven Start Up Batch script
#
# Required ENV vars:
# ------------------
# JAVA_HOME - location of a JDK home dir
#
# Optional ENV vars
# -----------------
# M2_HOME - location of maven2's installed home dir
# MAVEN_OPTS - parameters passed to the Java VM when running Maven
# e.g. to debug Maven itself, use
# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
# MAVEN_SKIP_RC - flag to disable loading of mavenrc files
# ----------------------------------------------------------------------------
if [ -z "$MAVEN_SKIP_RC" ] ; then
if [ -f /etc/mavenrc ] ; then
. /etc/mavenrc
fi
if [ -f "$HOME/.mavenrc" ] ; then
. "$HOME/.mavenrc"
fi
fi
# OS specific support. $var _must_ be set to either true or false.
cygwin=false;
darwin=false;
mingw=false
case "`uname`" in
CYGWIN*) cygwin=true ;;
MINGW*) mingw=true;;
Darwin*) darwin=true
# Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home
# See https://developer.apple.com/library/mac/qa/qa1170/_index.html
if [ -z "$JAVA_HOME" ]; then
if [ -x "/usr/libexec/java_home" ]; then
export JAVA_HOME="`/usr/libexec/java_home`"
else
export JAVA_HOME="/Library/Java/Home"
fi
fi
;;
esac
if [ -z "$JAVA_HOME" ] ; then
if [ -r /etc/gentoo-release ] ; then
JAVA_HOME=`java-config --jre-home`
fi
fi
if [ -z "$M2_HOME" ] ; then
## resolve links - $0 may be a link to maven's home
PRG="$0"
# need this for relative symlinks
while [ -h "$PRG" ] ; do
ls=`ls -ld "$PRG"`
link=`expr "$ls" : '.*-> \(.*\)$'`
if expr "$link" : '/.*' > /dev/null; then
PRG="$link"
else
PRG="`dirname "$PRG"`/$link"
fi
done
saveddir=`pwd`
M2_HOME=`dirname "$PRG"`/..
# make it fully qualified
M2_HOME=`cd "$M2_HOME" && pwd`
cd "$saveddir"
# echo Using m2 at $M2_HOME
fi
# For Cygwin, ensure paths are in UNIX format before anything is touched
if $cygwin ; then
[ -n "$M2_HOME" ] &&
M2_HOME=`cygpath --unix "$M2_HOME"`
[ -n "$JAVA_HOME" ] &&
JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
[ -n "$CLASSPATH" ] &&
CLASSPATH=`cygpath --path --unix "$CLASSPATH"`
fi
# For Mingw, ensure paths are in UNIX format before anything is touched
if $mingw ; then
[ -n "$M2_HOME" ] &&
M2_HOME="`(cd "$M2_HOME"; pwd)`"
[ -n "$JAVA_HOME" ] &&
JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`"
fi
if [ -z "$JAVA_HOME" ]; then
javaExecutable="`which javac`"
if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then
# readlink(1) is not available as standard on Solaris 10.
readLink=`which readlink`
if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then
if $darwin ; then
javaHome="`dirname \"$javaExecutable\"`"
javaExecutable="`cd \"$javaHome\" && pwd -P`/javac"
else
javaExecutable="`readlink -f \"$javaExecutable\"`"
fi
javaHome="`dirname \"$javaExecutable\"`"
javaHome=`expr "$javaHome" : '\(.*\)/bin'`
JAVA_HOME="$javaHome"
export JAVA_HOME
fi
fi
fi
if [ -z "$JAVACMD" ] ; then
if [ -n "$JAVA_HOME" ] ; then
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
# IBM's JDK on AIX uses strange locations for the executables
JAVACMD="$JAVA_HOME/jre/sh/java"
else
JAVACMD="$JAVA_HOME/bin/java"
fi
else
JAVACMD="`which java`"
fi
fi
if [ ! -x "$JAVACMD" ] ; then
echo "Error: JAVA_HOME is not defined correctly." >&2
echo " We cannot execute $JAVACMD" >&2
exit 1
fi
if [ -z "$JAVA_HOME" ] ; then
echo "Warning: JAVA_HOME environment variable is not set."
fi
CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher
# traverses directory structure from process work directory to filesystem root
# first directory with .mvn subdirectory is considered project base directory
find_maven_basedir() {
if [ -z "$1" ]
then
echo "Path not specified to find_maven_basedir"
return 1
fi
basedir="$1"
wdir="$1"
while [ "$wdir" != '/' ] ; do
if [ -d "$wdir"/.mvn ] ; then
basedir=$wdir
break
fi
# workaround for JBEAP-8937 (on Solaris 10/Sparc)
if [ -d "${wdir}" ]; then
wdir=`cd "$wdir/.."; pwd`
fi
# end of workaround
done
echo "${basedir}"
}
# concatenates all lines of a file
concat_lines() {
if [ -f "$1" ]; then
echo "$(tr -s '\n' ' ' < "$1")"
fi
}
BASE_DIR=`find_maven_basedir "$(pwd)"`
if [ -z "$BASE_DIR" ]; then
exit 1;
fi
##########################################################################################
# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
# This allows using the maven wrapper in projects that prohibit checking in binary data.
##########################################################################################
if [ -r "$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" ]; then
if [ "$MVNW_VERBOSE" = true ]; then
echo "Found .mvn/wrapper/maven-wrapper.jar"
fi
else
if [ "$MVNW_VERBOSE" = true ]; then
echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..."
fi
if [ -n "$MVNW_REPOURL" ]; then
jarUrl="$MVNW_REPOURL/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar"
else
jarUrl="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar"
fi
while IFS="=" read key value; do
case "$key" in (wrapperUrl) jarUrl="$value"; break ;;
esac
done < "$BASE_DIR/.mvn/wrapper/maven-wrapper.properties"
if [ "$MVNW_VERBOSE" = true ]; then
echo "Downloading from: $jarUrl"
fi
wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar"
if $cygwin; then
wrapperJarPath=`cygpath --path --windows "$wrapperJarPath"`
fi
if command -v wget > /dev/null; then
if [ "$MVNW_VERBOSE" = true ]; then
echo "Found wget ... using wget"
fi
if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
wget "$jarUrl" -O "$wrapperJarPath"
else
wget --http-user=$MVNW_USERNAME --http-password=$MVNW_PASSWORD "$jarUrl" -O "$wrapperJarPath"
fi
elif command -v curl > /dev/null; then
if [ "$MVNW_VERBOSE" = true ]; then
echo "Found curl ... using curl"
fi
if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
curl -o "$wrapperJarPath" "$jarUrl" -f
else
curl --user $MVNW_USERNAME:$MVNW_PASSWORD -o "$wrapperJarPath" "$jarUrl" -f
fi
else
if [ "$MVNW_VERBOSE" = true ]; then
echo "Falling back to using Java to download"
fi
javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java"
# For Cygwin, switch paths to Windows format before running javac
if $cygwin; then
javaClass=`cygpath --path --windows "$javaClass"`
fi
if [ -e "$javaClass" ]; then
if [ ! -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then
if [ "$MVNW_VERBOSE" = true ]; then
echo " - Compiling MavenWrapperDownloader.java ..."
fi
# Compiling the Java class
("$JAVA_HOME/bin/javac" "$javaClass")
fi
if [ -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then
# Running the downloader
if [ "$MVNW_VERBOSE" = true ]; then
echo " - Running MavenWrapperDownloader.java ..."
fi
("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$MAVEN_PROJECTBASEDIR")
fi
fi
fi
fi
##########################################################################################
# End of extension
##########################################################################################
export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"}
if [ "$MVNW_VERBOSE" = true ]; then
echo $MAVEN_PROJECTBASEDIR
fi
MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS"
# For Cygwin, switch paths to Windows format before running java
if $cygwin; then
[ -n "$M2_HOME" ] &&
M2_HOME=`cygpath --path --windows "$M2_HOME"`
[ -n "$JAVA_HOME" ] &&
JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"`
[ -n "$CLASSPATH" ] &&
CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
[ -n "$MAVEN_PROJECTBASEDIR" ] &&
MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"`
fi
# Provide a "standardized" way to retrieve the CLI args that will
# work with both Windows and non-Windows executions.
MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@"
export MAVEN_CMD_LINE_ARGS
WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
exec "$JAVACMD" \
$MAVEN_OPTS \
-classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \
"-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \
${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@"

182
UB_ProductServiceProxy/mvnw.cmd

@ -0,0 +1,182 @@
@REM ----------------------------------------------------------------------------
@REM Licensed to the Apache Software Foundation (ASF) under one
@REM or more contributor license agreements. See the NOTICE file
@REM distributed with this work for additional information
@REM regarding copyright ownership. The ASF licenses this file
@REM to you under the Apache License, Version 2.0 (the
@REM "License"); you may not use this file except in compliance
@REM with the License. You may obtain a copy of the License at
@REM
@REM https://www.apache.org/licenses/LICENSE-2.0
@REM
@REM Unless required by applicable law or agreed to in writing,
@REM software distributed under the License is distributed on an
@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
@REM KIND, either express or implied. See the License for the
@REM specific language governing permissions and limitations
@REM under the License.
@REM ----------------------------------------------------------------------------
@REM ----------------------------------------------------------------------------
@REM Maven Start Up Batch script
@REM
@REM Required ENV vars:
@REM JAVA_HOME - location of a JDK home dir
@REM
@REM Optional ENV vars
@REM M2_HOME - location of maven2's installed home dir
@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands
@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending
@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven
@REM e.g. to debug Maven itself, use
@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files
@REM ----------------------------------------------------------------------------
@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on'
@echo off
@REM set title of command window
title %0
@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on'
@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO%
@REM set %HOME% to equivalent of $HOME
if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%")
@REM Execute a user defined script before this one
if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre
@REM check for pre script, once with legacy .bat ending and once with .cmd ending
if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat"
if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd"
:skipRcPre
@setlocal
set ERROR_CODE=0
@REM To isolate internal variables from possible post scripts, we use another setlocal
@setlocal
@REM ==== START VALIDATION ====
if not "%JAVA_HOME%" == "" goto OkJHome
echo.
echo Error: JAVA_HOME not found in your environment. >&2
echo Please set the JAVA_HOME variable in your environment to match the >&2
echo location of your Java installation. >&2
echo.
goto error
:OkJHome
if exist "%JAVA_HOME%\bin\java.exe" goto init
echo.
echo Error: JAVA_HOME is set to an invalid directory. >&2
echo JAVA_HOME = "%JAVA_HOME%" >&2
echo Please set the JAVA_HOME variable in your environment to match the >&2
echo location of your Java installation. >&2
echo.
goto error
@REM ==== END VALIDATION ====
:init
@REM Find the project base dir, i.e. the directory that contains the folder ".mvn".
@REM Fallback to current working directory if not found.
set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR%
IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir
set EXEC_DIR=%CD%
set WDIR=%EXEC_DIR%
:findBaseDir
IF EXIST "%WDIR%"\.mvn goto baseDirFound
cd ..
IF "%WDIR%"=="%CD%" goto baseDirNotFound
set WDIR=%CD%
goto findBaseDir
:baseDirFound
set MAVEN_PROJECTBASEDIR=%WDIR%
cd "%EXEC_DIR%"
goto endDetectBaseDir
:baseDirNotFound
set MAVEN_PROJECTBASEDIR=%EXEC_DIR%
cd "%EXEC_DIR%"
:endDetectBaseDir
IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig
@setlocal EnableExtensions EnableDelayedExpansion
for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a
@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS%
:endReadAdditionalConfig
SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe"
set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar"
set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar"
FOR /F "tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO (
IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B
)
@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
@REM This allows using the maven wrapper in projects that prohibit checking in binary data.
if exist %WRAPPER_JAR% (
if "%MVNW_VERBOSE%" == "true" (
echo Found %WRAPPER_JAR%
)
) else (
if not "%MVNW_REPOURL%" == "" (
SET DOWNLOAD_URL="%MVNW_REPOURL%/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar"
)
if "%MVNW_VERBOSE%" == "true" (
echo Couldn't find %WRAPPER_JAR%, downloading it ...
echo Downloading from: %DOWNLOAD_URL%
)
powershell -Command "&{"^
"$webclient = new-object System.Net.WebClient;"^
"if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^
"$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^
"}"^
"[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"^
"}"
if "%MVNW_VERBOSE%" == "true" (
echo Finished downloading %WRAPPER_JAR%
)
)
@REM End of extension
@REM Provide a "standardized" way to retrieve the CLI args that will
@REM work with both Windows and non-Windows executions.
set MAVEN_CMD_LINE_ARGS=%*
%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %*
if ERRORLEVEL 1 goto error
goto end
:error
set ERROR_CODE=1
:end
@endlocal & set ERROR_CODE=%ERROR_CODE%
if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost
@REM check for post script, once with legacy .bat ending and once with .cmd ending
if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat"
if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd"
:skipRcPost
@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on'
if "%MAVEN_BATCH_PAUSE%" == "on" pause
if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE%
exit /B %ERROR_CODE%

56
UB_ProductServiceProxy/pom.xml

@ -0,0 +1,56 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.4</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>UB_ProductServiceProxy</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>UB_ProductServiceProxy</name>
<description>UrbanBazaar - Online Grocery Shop</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>

13
UB_ProductServiceProxy/src/main/java/com/example/urbanbazaar/ServletInitializer.java

@ -0,0 +1,13 @@
package com.example.urbanbazaar;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
public class ServletInitializer extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(UbProductServiceProxyApplication.class);
}
}

13
UB_ProductServiceProxy/src/main/java/com/example/urbanbazaar/UbProductServiceProxyApplication.java

@ -0,0 +1,13 @@
package com.example.urbanbazaar;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class UbProductServiceProxyApplication {
public static void main(String[] args) {
SpringApplication.run(UbProductServiceProxyApplication.class, args);
}
}

88
UB_ProductServiceProxy/src/main/java/com/example/urbanbazaar/controller/CartController.java

@ -0,0 +1,88 @@
package com.example.urbanbazaar.controller;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import com.example.urbanbazaar.model.Cart;
import com.example.urbanbazaar.model.Product;
import com.example.urbanbazaar.model.ProductCategory;
//import com.example.urbanbazaar.model.User;
import com.example.urbanbazaar.repository.CartRepository;
import com.example.urbanbazaar.repository.ProductRepository;
import com.example.urbanbazaar.repository.UserRepository;
//import com.example.urbanbazaar.repository.UserRepository;
@RestController
public class CartController {
@Autowired
public CartRepository repo;
// @Autowired
// public UserRepository userepo;
//
// @Autowired
// public ProductRepository productrepo;
@PostMapping("/addCart")
public void addCart(@RequestBody Cart cart)
{
repo.save(cart);
}
@GetMapping("/showCart")
public List<Cart>showAll()
{
return repo.findAll();
}
@DeleteMapping("/deleteCart/{pid}")
public void deleteCart(@PathVariable int pid)
{
repo.deleteById(pid);
}
@DeleteMapping("/deleteAll")
public void deleteAll()
{
repo.deleteAll();
}
// @GetMapping("/showCart/{userId}")
// public List<Cart> showCartForUserId(int userId) {
// return repo.showCartForUserId(userId);
// }
//
// @PostMapping("/addCartItem")
// public void addCartItemForUserId(@RequestBody Cart cartItem) {
// repo.save(cartItem);
//// System.out.println(cartItem);
// }
//
// @DeleteMapping("/deleteCartItem/{cart_id}")
// public void deleteCartItemForUserId(int cart_id) {
// repo.deleteById(cart_id);
// }
//
// @GetMapping("/showCart")
// public List<Cart> showCart()
// {
// return repo.findAll();
// }
//
// @DeleteMapping("/deleteAllCartItemsForUser/{userId}")
// public void removeCartItemsForUser(int userId){
// repo.deleteAllCartItems(userId);
// }
}

22
UB_ProductServiceProxy/src/main/java/com/example/urbanbazaar/controller/ProductCategoryController.java

@ -0,0 +1,22 @@
package com.example.urbanbazaar.controller;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import com.example.urbanbazaar.model.ProductCategory;
import com.example.urbanbazaar.repository.ProductCategoryRepository;
@RestController
public class ProductCategoryController {
@Autowired
private ProductCategoryRepository repo;
@GetMapping("/showProductCategory")
public List<ProductCategory> showAllCategory() {
return repo.findAll();
}
}

56
UB_ProductServiceProxy/src/main/java/com/example/urbanbazaar/controller/ProductController.java

@ -0,0 +1,56 @@
package com.example.urbanbazaar.controller;
import java.util.List;
import java.util.NoSuchElementException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import com.example.urbanbazaar.model.Product;
import com.example.urbanbazaar.repository.ProductRepository;
@RestController
public class ProductController {
@Autowired
private ProductRepository repo;
@GetMapping("/showAllProducts")
public List<Product> showAllProduct() {
return repo.findAll();
}
@GetMapping("/searchProduct/{name}")
public ResponseEntity<List<Product>> searchProduct(@PathVariable String name) {
try {
List<Product> products = repo.searchByName(name);
return new ResponseEntity<List<Product>>(products, HttpStatus.OK);
} catch (NoSuchElementException e) {
return new ResponseEntity<List<Product>>(HttpStatus.NOT_FOUND);
}
}
// @PostMapping("/addProduct")
// public void addProduct(@RequestBody Product product)
// {
// repo.save(product);
// }
//
// @DeleteMapping("/deleteProduct/{product_id}")
// public void deleteProductById(@PathVariable int product_id) {
// repo.deleteById(product_id);
// }
//
// @DeleteMapping("/deleteAll")
// public void deleteAllProduct()
// {
// repo.deleteAll();
// }
}

68
UB_ProductServiceProxy/src/main/java/com/example/urbanbazaar/model/Cart.java

@ -0,0 +1,68 @@
package com.example.urbanbazaar.model;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToOne;
import javax.persistence.Table;
@Entity
@Table(name = "cart")
public class Cart {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int cartid;
private int productid;
private int userid;
private String productname;
private float productprice;
private int productcategoryid;
public int getCartid() {
return cartid;
}
public void setCartid(int cartid) {
this.cartid = cartid;
}
public int getProductid() {
return productid;
}
public void setProductid(int productid) {
this.productid = productid;
}
public int getUserid() {
return userid;
}
public void setUserid(int userid) {
this.userid = userid;
}
public String getProductname() {
return productname;
}
public void setProductname(String productname) {
this.productname = productname;
}
public float getProductprice() {
return productprice;
}
public void setProductprice(float productprice) {
this.productprice = productprice;
}
public int getProductcategoryid() {
return productcategoryid;
}
public void setProductcategoryid(int productcategoryid) {
this.productcategoryid = productcategoryid;
}
}

71
UB_ProductServiceProxy/src/main/java/com/example/urbanbazaar/model/Product.java

@ -0,0 +1,71 @@
package com.example.urbanbazaar.model;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToOne;
import javax.persistence.Table;
@Entity
@Table(name = "Product")
public class Product {
@Id
@GeneratedValue
private int productid;
private String productname;
private float productprice;
private String productimage;
private int productcategoryid;
public int getProductid() {
return productid;
}
public void setProductid(int productid) {
this.productid = productid;
}
public String getProductname() {
return productname;
}
public void setProductname(String productname) {
this.productname = productname;
}
public float getProductprice() {
return productprice;
}
public void setProductprice(float productprice) {
this.productprice = productprice;
}
public String getProductimage() {
return productimage;
}
public void setProductimage(String productimage) {
this.productimage = productimage;
}
public int getProductcategoryid() {
return productcategoryid;
}
public void setProductcategoryid(int productcategoryid) {
this.productcategoryid = productcategoryid;
}
public Product(int productid, String productname, float productprice, String productimage, int productcategoryid) {
this.productid = productid;
this.productname = productname;
this.productprice = productprice;
this.productimage = productimage;
this.productcategoryid = productcategoryid;
}
public Product() {
}
}

42
UB_ProductServiceProxy/src/main/java/com/example/urbanbazaar/model/ProductCategory.java

@ -0,0 +1,42 @@
package com.example.urbanbazaar.model;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name = "productcategories")
public class ProductCategory {
@Id
@GeneratedValue
private int categoryid;
private String categoryname;
public int getCategoryid() {
return categoryid;
}
public void setCategoryid(int categoryid) {
this.categoryid = categoryid;
}
public String getCategoryname() {
return categoryname;
}
public void setCategoryname(String categoryname) {
this.categoryname = categoryname;
}
public ProductCategory(int categoryid, String categoryname) {
this.categoryid = categoryid;
this.categoryname = categoryname;
}
public ProductCategory() {
}
}

142
UB_ProductServiceProxy/src/main/java/com/example/urbanbazaar/model/User.java

@ -0,0 +1,142 @@
package com.example.urbanbazaar.model;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import com.fasterxml.jackson.annotation.JsonIgnore;
import javax.persistence.GenerationType;
//daouser
@Entity
@Table(name = "users")
public class User {
private int userid;
private String useremail;
private String userpassword;
private String userfirstname;
private String userlastname;
private String usercity;
private String userstate;
private String userzip;
private String userphone;
private String useraddress;
private String useraddress2;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
public int getUserid() {
return userid;
}
public void setUserid(int userid) {
this.userid = userid;
}
public String getUseremail() {
return useremail;
}
public void setUseremail(String useremail) {
this.useremail = useremail;
}
public String getUserpassword() {
return userpassword;
}
public void setUserpassword(String userpassword) {
this.userpassword = userpassword;
}
public String getUserfirstname() {
return userfirstname;
}
public void setUserfirstname(String userfirstname) {
this.userfirstname = userfirstname;
}
public String getUserlastname() {
return userlastname;
}
public void setUserlastname(String userlastname) {
this.userlastname = userlastname;
}
public String getUsercity() {
return usercity;
}
public void setUsercity(String usercity) {
this.usercity = usercity;
}
public String getUserstate() {
return userstate;
}
public void setUserstate(String userstate) {
this.userstate = userstate;
}
public String getUserzip() {
return userzip;
}
public void setUserzip(String userzip) {
this.userzip = userzip;
}
public String getUserphone() {
return userphone;
}
public void setUserphone(String userphone) {
this.userphone = userphone;
}
public String getUseraddress() {
return useraddress;
}
public void setUseraddress(String useraddress) {
this.useraddress = useraddress;
}
public String getUseraddress2() {
return useraddress2;
}
public void setUseraddress2(String useraddress2) {
this.useraddress2 = useraddress2;
}
public User(int userid, String useremail, String userpassword, String userfirstname, String userlastname,
String usercity, String userstate, String userzip, String userphone, String useraddress,
String useraddress2) {
this.userid = userid;
this.useremail = useremail;
this.userpassword = userpassword;
this.userfirstname = userfirstname;
this.userlastname = userlastname;
this.usercity = usercity;
this.userstate = userstate;
this.userzip = userzip;
this.userphone = userphone;
this.useraddress = useraddress;
this.useraddress2 = useraddress2;
}
public User() {
}
}

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save