| @@ -20,4 +20,5 @@ | |||
| <section class="malls"> | |||
| <app-malls></app-malls> | |||
| <app-vendors></app-vendors> | |||
| </section> | |||
| @@ -13,8 +13,6 @@ | |||
| <div class="upfold-content"> | |||
| <h5> {{malls.mall_name}}</h5> | |||
| <p>{{malls.description}}</p> | |||
| {{showModal}} | |||
| <div> | |||
| <span *ngIf='malls.outlet.length > 0'>Outlets: {{malls.outlet.length}}</span> | |||
| <span *ngIf='malls.outlet.length === 0'>Outlets: 0</span> | |||
| @@ -26,7 +24,7 @@ | |||
| </li> | |||
| </div> | |||
| <div class="popUp"> | |||
| <div class="popUp" *ngIf='showModal === true'> | |||
| <div class="popup-box"> | |||
| <ul class="input-list"> | |||
| <h4>Mall Details:</h4> | |||
| @@ -34,31 +32,31 @@ | |||
| <div class="mallDetails"> | |||
| <li> | |||
| <label>Name:</label> | |||
| <input type="text" [(ngModel)]="newMall.mall_name" required> | |||
| <input type="text" [(ngModel)]="newMall.mall_name"> | |||
| </li> | |||
| <li> | |||
| <label>Description:</label> | |||
| <input type="text" [(ngModel)]='newMall.description' required> | |||
| <input type="text" [(ngModel)]='newMall.description'> | |||
| </li> | |||
| <li> | |||
| <label>Image:</label> | |||
| <input type="text" [(ngModel)]='newMall.image_url' required> | |||
| <input type="text" [(ngModel)]='newMall.image_url'> | |||
| </li> | |||
| <li> | |||
| <label>Address:</label> | |||
| <input type="text" [(ngModel)]='newMall.mall_address' required> | |||
| <input type="text" [(ngModel)]='newMall.mall_address'> | |||
| </li> | |||
| <li> | |||
| <label>Mall Distance:</label> | |||
| <input type="number" [(ngModel)]='newMall.mall_distance' required> | |||
| <input type="number" [(ngModel)]='newMall.mall_distance'> | |||
| </li> | |||
| <li> | |||
| <label>Rating:</label> | |||
| <input type="number" [(ngModel)]='newMall.rating' required> | |||
| <input type="number" [(ngModel)]='newMall.rating'> | |||
| </li> | |||
| <li> | |||
| <label>Offers Count:</label> | |||
| <input type="number" [(ngModel)]='newMall.offers_count' required> | |||
| <input type="number" [(ngModel)]='newMall.offers_count'> | |||
| </li> | |||
| </div> | |||
| @@ -66,19 +64,19 @@ | |||
| <div class="addDetails"> | |||
| <li> | |||
| <label>Created By</label> | |||
| <input type="text" [(ngModel)]="newMall.advertisement.createdBy" required> | |||
| <input type="text" [(ngModel)]="newMall.advertisement[0].createdBy"> | |||
| </li> | |||
| <li> | |||
| <label>Image</label> | |||
| <input type="text" [(ngModel)]="newMall.advertisement.image" required> | |||
| <input type="text" [(ngModel)]="newMall.advertisement[0].image"> | |||
| </li> | |||
| <li> | |||
| <label>Type</label> | |||
| <input type="text" [(ngModel)]="newMall.advertisement.type" required> | |||
| <input type="text" [(ngModel)]="newMall.advertisement[0].type"> | |||
| </li> | |||
| <li> | |||
| <label>Updated By</label> | |||
| <input type="text" [(ngModel)]="newMall.advertisement.updatedBy" required> | |||
| <input type="text" [(ngModel)]="newMall.advertisement[0].updatedBy"> | |||
| </li> | |||
| </div> | |||
| @@ -86,38 +84,46 @@ | |||
| <div class="outletdistance"> | |||
| <li> | |||
| <label>Outlet Name</label> | |||
| <input type="text" [(ngModel)]="newMall.outlet.outlet_name" required> | |||
| <input type="text" [(ngModel)]="newMall.outlet[0].outlet_name"> | |||
| </li> | |||
| <li> | |||
| <label>Description</label> | |||
| <input type="text" [(ngModel)]="newMall.outlet.description" required> | |||
| <input type="text" [(ngModel)]="newMall.outlet[0].description"> | |||
| </li> | |||
| <li> | |||
| <label>Outlet Timings</label> | |||
| <input type="text" [(ngModel)]="newMall.outlet.outlet_timing" required> | |||
| <input type="text" [(ngModel)]="newMall.outlet[0].outlet_timing"> | |||
| </li> | |||
| <li> | |||
| <label>Image</label> | |||
| <input type="text" [(ngModel)]="newMall.outlet.image_url" required> | |||
| <input type="text" [(ngModel)]="newMall.outlet[0].image_url"> | |||
| </li> | |||
| <li> | |||
| <label>Outlet GST</label> | |||
| <input type="number" [(ngModel)]="newMall.outlet.outlet_Gst" required> | |||
| <input type="number" [(ngModel)]="newMall.outlet[0].outlet_Gst"> | |||
| </li> | |||
| <li> | |||
| <label>Outlet Type</label> | |||
| <input type="text" [(ngModel)]="newMall.outlet.outlet_type" required> | |||
| <input type="text" [(ngModel)]="newMall.outlet[0].outlet_type"> | |||
| </li> | |||
| <li> | |||
| <label>Rating</label> | |||
| <input type="number" [(ngModel)]="newMall.outlet.rating" required> | |||
| <input type="number" [(ngModel)]="newMall.outlet[0].rating"> | |||
| </li> | |||
| </div> | |||
| </ul> | |||
| <div class="action-buttons"> | |||
| <button class="rect-button cancel" (click)="showModal = false">Cancel</button> | |||
| <button class="rect-button" (click)="addMall()">Add</button> | |||
| <button class="rect-button" [ngClass]='{disable: ((newMall.mall_name.length && newMall.mall_address.length && | |||
| newMall.image_url.length && | |||
| newMall.advertisement[0].createdBy && | |||
| newMall.advertisement[0].image.length && | |||
| newMall.advertisement[0].type && | |||
| newMall.outlet[0].outlet_name && | |||
| newMall.outlet[0].image_url) === 0)}' (click)="addMall()" [disabled]='(newMall.mall_name.length && newMall.mall_address.length && newMall.image_url.length && | |||
| newMall.advertisement[0].createdBy.length && newMall.advertisement[0].image.length && newMall.advertisement[0].type.length && | |||
| newMall.outlet[0].outlet_name.length && newMall.outlet[0].image_url.length) === 0'>Add</button> | |||
| </div> | |||
| </div> | |||
| </div> | |||
| @@ -181,6 +181,11 @@ | |||
| border: 2px solid var(--brand-blue); | |||
| color: var(--brand-blue); | |||
| } | |||
| &.disable { | |||
| cursor: not-allowed; | |||
| filter: grayscale(1); | |||
| } | |||
| } | |||
| li { | |||
| @@ -17,68 +17,75 @@ export class MallsComponent implements OnInit { | |||
| tempMalls: any = []; | |||
| showModal: boolean = false; | |||
| toggleAdd: boolean = false; | |||
| newMall: { | |||
| advertisement: { | |||
| adv_type: true, | |||
| createdBy: string, | |||
| createdOn: string, | |||
| image: string, | |||
| soft_delete: true, | |||
| type: string, | |||
| updatedBy: string, | |||
| updatedOn: string, | |||
| }, | |||
| advertisement: [ | |||
| { | |||
| adv_type: true, | |||
| createdBy: string, | |||
| createdOn: string, | |||
| image: string, | |||
| soft_delete: true, | |||
| type: string, | |||
| updatedBy: string, | |||
| updatedOn: string, | |||
| } | |||
| ], | |||
| description: string, | |||
| image_url: string, | |||
| is_bookmarked: true, | |||
| mall_address: string, | |||
| mall_distance: number, | |||
| mall_distance: 0, | |||
| mall_name: string, | |||
| offers_count: number, | |||
| outlet: { | |||
| description: string, | |||
| image_url: string, | |||
| is_bookmarked: true, | |||
| outlet_Gst: 0, | |||
| outlet_id: 0, | |||
| outlet_name: string, | |||
| outlet_timing: string, | |||
| outlet_type: string, | |||
| rating: number, | |||
| }, | |||
| rating: number, | |||
| offers_count: 0, | |||
| outlet: [ | |||
| { | |||
| description: string, | |||
| image_url: string, | |||
| is_bookmarked: true, | |||
| outlet_Gst: number, | |||
| outlet_id: number, | |||
| outlet_name: string, | |||
| outlet_timing: string, | |||
| outlet_type: string, | |||
| rating: number | |||
| } | |||
| ], | |||
| rating: 0, | |||
| soft_delete: true | |||
| } = { | |||
| advertisement: { | |||
| adv_type: true, | |||
| createdBy: '', | |||
| createdOn: '', | |||
| image: '', | |||
| soft_delete: true, | |||
| type: '', | |||
| updatedBy: '', | |||
| updatedOn: '', | |||
| }, | |||
| description: '', | |||
| image_url: '', | |||
| advertisement: [ | |||
| { | |||
| adv_type: true, | |||
| createdBy: "", | |||
| createdOn: "2021-10-26T12:19:53.071Z", | |||
| image: "", | |||
| soft_delete: true, | |||
| type: "", | |||
| updatedBy: "", | |||
| updatedOn: "2021-10-26T12:19:53.071Z" | |||
| } | |||
| ], | |||
| description: "", | |||
| image_url: "", | |||
| is_bookmarked: true, | |||
| mall_address: '', | |||
| mall_address: "", | |||
| mall_distance: 0, | |||
| mall_name: '', | |||
| mall_name: "", | |||
| offers_count: 0, | |||
| outlet: { | |||
| description: '', | |||
| image_url: '', | |||
| is_bookmarked: true, | |||
| outlet_Gst: 0, | |||
| outlet_id: 0, | |||
| outlet_name: '', | |||
| outlet_timing: '', | |||
| outlet_type: '', | |||
| rating: 0, | |||
| }, | |||
| outlet: [ | |||
| { | |||
| description: "", | |||
| image_url: "", | |||
| is_bookmarked: true, | |||
| outlet_Gst: 0, | |||
| outlet_id: 0, | |||
| outlet_name: "", | |||
| outlet_timing: "2021-10-26T12:19:53.071Z", | |||
| outlet_type: "", | |||
| rating: 0 | |||
| } | |||
| ], | |||
| rating: 0, | |||
| soft_delete: true | |||
| } | |||
| @@ -90,7 +97,6 @@ export class MallsComponent implements OnInit { | |||
| ngOnInit() { | |||
| this.getAllMalls() | |||
| console.log(this.currentTime) | |||
| } | |||
| getAllMalls() { | |||
| @@ -103,7 +109,6 @@ export class MallsComponent implements OnInit { | |||
| this.tempMalls = arrayofMalls; | |||
| localStorage.allMalls = JSON.stringify(arrayofMalls) | |||
| console.log(this.allMalls) | |||
| }, (error) => { | |||
| console.log("Error getting Malls", error) | |||
| }) | |||
| @@ -120,6 +125,15 @@ export class MallsComponent implements OnInit { | |||
| } | |||
| addMall() { | |||
| this.mallService.addNewMall(this.newMall).then(response => { | |||
| alert("Mall Added Successfully") | |||
| this.showModal = false; | |||
| console.log(response) | |||
| }, () => { | |||
| console.log("Error Adding New Mall") | |||
| }) | |||
| console.log(this.newMall) | |||
| } | |||
| } | |||
| @@ -0,0 +1 @@ | |||
| @import '../commonCard'; | |||
| @@ -0,0 +1,25 @@ | |||
| import { async, ComponentFixture, TestBed } from '@angular/core/testing'; | |||
| import { VendorsComponent } from './vendors.component'; | |||
| describe('VendorsComponent', () => { | |||
| let component: VendorsComponent; | |||
| let fixture: ComponentFixture<VendorsComponent>; | |||
| beforeEach(async(() => { | |||
| TestBed.configureTestingModule({ | |||
| declarations: [ VendorsComponent ] | |||
| }) | |||
| .compileComponents(); | |||
| })); | |||
| beforeEach(() => { | |||
| fixture = TestBed.createComponent(VendorsComponent); | |||
| component = fixture.componentInstance; | |||
| fixture.detectChanges(); | |||
| }); | |||
| it('should create', () => { | |||
| expect(component).toBeTruthy(); | |||
| }); | |||
| }); | |||
| @@ -0,0 +1,23 @@ | |||
| import { Component, OnInit } from '@angular/core'; | |||
| import { VendorService } from 'src/app/services/vendor.service'; | |||
| @Component({ | |||
| selector: 'app-vendors', | |||
| templateUrl: './vendors.component.html', | |||
| styleUrls: ['./vendors.component.scss'] | |||
| }) | |||
| export class VendorsComponent implements OnInit { | |||
| constructor(private vendorService: VendorService) { } | |||
| vendorInfo: any | |||
| ngOnInit() { | |||
| this.getVendorInfo() | |||
| } | |||
| getVendorInfo(){ | |||
| } | |||
| } | |||
| @@ -34,6 +34,7 @@ import { NotificaitonComponent } from './admin/notificaiton/notificaiton.compone | |||
| import { SupportTicketsComponent } from './admin/support-tickets/support-tickets.component'; | |||
| import { QueriesComponent } from './admin/queries/queries.component'; | |||
| import { MallsComponent } from './admin/malls/malls.component'; | |||
| import { VendorsComponent } from './admin/vendors/vendors.component'; | |||
| @NgModule({ | |||
| declarations: [ | |||
| @@ -54,7 +55,8 @@ import { MallsComponent } from './admin/malls/malls.component'; | |||
| NotificaitonComponent, | |||
| SupportTicketsComponent, | |||
| QueriesComponent, | |||
| MallsComponent | |||
| MallsComponent, | |||
| VendorsComponent | |||
| ], | |||
| imports: [ | |||
| BrowserModule, | |||
| @@ -35,4 +35,17 @@ export class MallsService { | |||
| return await this.http.get(URL + '/api/maioraservice/mall/v1/latitude/' + latitude + '/longitude/' + longitude + '/check/', httpOptions).toPromise(); | |||
| } | |||
| async addNewMall(newMall: any) { | |||
| const httpOptions = { | |||
| headers: new HttpHeaders({ | |||
| 'Access-Control-Allow-Origin': '*', | |||
| 'Content-Type': 'application/json', | |||
| 'Authorization': 'Bearer ' + localStorage.token | |||
| }) | |||
| }; | |||
| return await this.http.post(URL + '/api/maioraservice/Mall/v1/create/', newMall, httpOptions).toPromise(); | |||
| } | |||
| } | |||
| @@ -0,0 +1,12 @@ | |||
| import { TestBed } from '@angular/core/testing'; | |||
| import { VendorService } from './vendor.service'; | |||
| describe('VendorService', () => { | |||
| beforeEach(() => TestBed.configureTestingModule({})); | |||
| it('should be created', () => { | |||
| const service: VendorService = TestBed.get(VendorService); | |||
| expect(service).toBeTruthy(); | |||
| }); | |||
| }); | |||
| @@ -0,0 +1,24 @@ | |||
| import { HttpClient, HttpHeaders } from '@angular/common/http'; | |||
| import { Injectable } from '@angular/core'; | |||
| import { URL } from '../data/url'; | |||
| @Injectable({ | |||
| providedIn: 'root' | |||
| }) | |||
| export class VendorService { | |||
| constructor(private http: HttpClient) { } | |||
| async getAllVendors() { | |||
| const httpOptions = { | |||
| headers: new HttpHeaders({ | |||
| 'Access-Control-Allow-Origin': '*', | |||
| 'Content-Type': 'application/json', | |||
| 'Authorization': 'Bearer ' + localStorage.token | |||
| }) | |||
| }; | |||
| return await this.http.get(URL + "/api/maioraservice/vendor/getallVendorsInfo", httpOptions).toPromise() | |||
| } | |||
| } | |||