Как проверить действующий промо-код в моем приложении Ionic 3 Angular по таблице базы данных? - PullRequest
0 голосов
/ 11 октября 2018

Я получаю данные от пользователя на новом экране регистрации пользователя.После нажатия на кнопку регистрации данные сохраняются в базе данных.Я использую поле ввода, называемое промокод, для проверки промокода пользователя.Вот что мне нужно:

У меня уже есть набор промокодов в таблице базы данных.Если пользователь вводит промокод и если в моей таблице базы данных есть определенный код, он может позволить пользователю зарегистрироваться в моем приложении.Предположим, что если пользователь вводит промокод, которого нет в моей таблице базы данных, он должен отображать всплывающее сообщение как недопустимый промокод, чтобы пользователю не разрешалось регистрироваться.Эта проверка промокода должна происходить после того, как пользователь введет все данные и после нажатия кнопки «Отправить».

Вот что я пробовал до сих пор:

В моем HTML:

<ion-item>
<ion-icon name="ios-hand" class="iconstyle" item-left></ion-icon>

<ion-label color = "textcolor" floating>Reseller Promo Code</ion-label>
<ion-input type="text" class="textcolor" [(ngModel)] = "vm.promocode" formControlName = "promocode" maxlength = "15"  tabindex="2" (keyup)="moveFocus($event,query, false)" >
</ion-input>
</ion-item>

В моем файле TS:

import { Component } from '@angular/core';
import {IonicPage, NavController, NavParams } from 'ionic-angular';
import {SignupService} from '../../services/signup.service';
import { MessageService } from '../../services/message.service';
import { BroadCastService } from '../../services/broadcast.service';
import { isNullOrUndefined } from 'util';
import { Signup } from '../../models/signup';
import { FormGroup, FormControl, Validators, AbstractControl} from '@angular/forms';
import { LoginPage } from '../login/login';

@IonicPage()
@Component({
  selector: 'page-signup',
  templateUrl: 'signup.html',
  providers: [SignupService]
})
export class SignupPage{
formsignup: FormGroup;

submit(){


  if (this.formsignup.valid) {
    this.signupservice.savesignup(this.vm).subscribe(res=>{
      console.log(res);
      this.message.alert("Your account has been created successfully");
      this.resetForm(this.formsignup);
      this.navCtrl.push(LoginPage);
    });


  }
  else{
  this.validateFormControl(this.formsignup);
}
}

Это мойФайл service.ts, в котором я отправляю данные пользователя на сервер и сохраняю их в базе данных.

import { Injectable } from "@angular/core";
import { DataService } from "./data.service";


@Injectable()
export class SignupService {
    constructor(private dataservice: DataService) {

    }

    savesignup(formdetails:any){
        return this.dataservice.post('/api/Login/Register', formdetails);
    }
}

В моем классе моделей я использовал этот промокод следующим образом:

регистрация.ts:

export class Signup{
promocode: string;

Теперь все работает нормально.Все мои данные сохраняются в базе данных, и я могу войти в систему с зарегистрированной учетной записью.Но я не знаю, как реализовать эту функциональность.Я новичок в Ionic.

1 Ответ

0 голосов
/ 12 октября 2018

Вы можете (или «должны») создать свой PromoService (Поставщик), и метод, который должен выглядеть примерно так, должен работать.

public GetPromo(code: string): Promise<any> { //Can be strongly typed if you want to implement a class or interface for a Promo
    var url = '/GetPromo'; //your endpoint's url.
    var args: RequestOptionsArgs = {
        method: 'GET',
        params: {
            code : code //Your parameter. You can add more properties for multiple parameters.
        }
    };

    return this.http.request(url, args).map(res => res.json()).toPromise();
}

Для запросов после публикации параметры прикрепляются к body.

var args: RequestOptionsArgs = {
    method: 'POST',
    body: {
        code : code //Your parameter. You can add more properties for multiple parameters.
    }
};
...