Post on 06-Jul-2018
8/17/2019 RC MobileFriendlyRewards 300915 0915 2
1/12
Mobile Friendly Rewards
Target release Mobile
Epic
Document status Published
Document owner Lenny Whitehead
Designer Aaron
Developers Lenny, Nino, Aaron
QA Not sure
Goals
Reproduce the existing functionality of RewardsCorp public website but mobile friendly
Background and strategic fit
Moves toward a PHP front end and .NET API / MySQL back end
Assumptions
JSON will be passed back and forth rather than paramater URLs
Requirements
# Title User Story Importance ASP.Net Page New MVP Route NewPHPpage
Done? Tested?
1 Existing Member Log In Registereduser logs inand isauthenticated
Must Have Members/Login api/authentication/authenticate
2 Forgotten Password User clicksforgottonpassword linkand gets sentan email
Must Have Members/RetrieveMemberPassword Email from PHP
3 New Member Signup New membersigns up byenteringdetails andcheque
Must Have Members/AddMember api/membership/addMember
4 My Account -> Member Details Memberviews theirstored details
Must Have Members/MyDetails api/membership/myDetails
5 My Account -> Edit Details Memberupdates theirstored details
Must Have Members/EditMember api/membership/editMember
6 My Account -> Reset Password Memberchanges theirpassword
Must Have Members/ChangeMemberPassword api/membership/changePassword
7 Rewards -> Account Balance Memberviews theiraccountbalance
Must Have Members/ManageRewards api/rewards/accountBalance
https://ignitetravel.atlassian.net/wiki/display/~lenny.whiteheadhttps://ignitetravel.atlassian.net/wiki/display/~lenny.whitehead
8/17/2019 RC MobileFriendlyRewards 300915 0915 2
2/12
8 Rewards -> Account History Memberviews theiraccounthistory
Must Have Members/AccountHistory api/rewards/accountHistory
9 Rewards -> Register Awards Memberregisters newchequerewards viaserial number
Must Have Members/AssignRewards api/rewards/registerCheque
10 Rewards -> Transfer Rewards Membertransfers
reqyrds toanothermember
Must Have Member/TransferRewards api/rewards/transferRewards
11 Accommodat ion/SearchRegion Usersearches foravailability byregion
Must Have Accommodation/Search api/search/regions
12 Accommodation/SearchLocation Usersearches foravailability bylocation
Must Have Accommodation/Search api/search/locations
13 Accommodat ion/SearchResort Usersearches foravailability byresort
Must Have Accommodation/Search api/search/resorts
14 Accommoodation/SearchCountries Usersearches for
availability bycountry
Must Have Accommodation/Search api/search/countries
15 Bookings/CreateBooking User to clicksbook tocreate abooking
Must Have Bookings/CreateBooking api/booking/create
16 Bookings/CancelBooking User elects tocancel abooking
Must Have Bookings/CreateBooking api/booking/cancel
17 Bookings/MakePayment User pays fora booking
Must Have Bookings/BookingPayment.aspx api/booking/payment
18 Voucher/PurchaseVoucher Memberpurchasesmovie or flightvouchers
Must Have BuyVoucher api/productvoucher/orderVoucher
19 Voucher/RetrieveVoucherUsage Member
requests toview voucherusage
Must Have BuyVoucher api/productvoucher/voucherUsage
User interaction and design
Not provided so assume free reign other than the slider
JSON
Below is a list of requests and responses for API calls:
Route Request Response
api/authentication/authenticate {
"UserName": "Lenny",
"PassWord": "Password",
"PromotionAlias": "Rewards"
}
{
"IsAuthenticated": true
}
8/17/2019 RC MobileFriendlyRewards 300915 0915 2
3/12
api/membership/addMember { "MemberId": 0, "Title": "Mr", "FirstName": "Lenny", "Surname": "Whitehead", "DateOfBirth":"2015-09-29T11:24:44.7322072+10:00", "Address": "95 Marine Parade", "Suburb": "Southport", "State": "Queensland",
"PostCode": "4215", "Country": "Australia", "PhoneNumber": "0435499700", "AlternativeNumber": "", "EmailAddress": "lenny.whitehead3@ignitetra
",vel.com "UserName": "lenny_promo_29", "Password": "password", "CurrencyId": 1, "SerialNumber": null, "IsActive": true, "IsReceiveEmail": true, "PromotionId": 28, "FavDest": null, "DateCreated": null, "CreationMethod": null
}
{
"true"
}
Members/MyDetails {
"MemberId": 12345,
"PromotionAlias": "Rewards"
}
{ "MemberId": 123, "Title": "Mr", "FirstName": "Lenny", "Surname": "Whitehead", "DateOfBirth":"2015-09-29T11:24:44.7322072+10:00", "Address": "95 Marine Parade", "Suburb": "Southport", "State": "Queensland", "PostCode": "4215", "Country": "Australia", "PhoneNumber": "0435499700", "AlternativeNumber": "",
"EmailAddress": "lenny.whitehead3@ignitetravel.c",om
"UserName": "lenny_promo_29", "CurrencyId": 1, "SerialNumber": null, "IsActive": true, "IsReceiveEmail": true, "PromotionId": 28, "FavDest": null, "DateCreated": null, "CreationMethod": null}
http://ignitetravel.com/http://ignitetravel.com/http://ignitetravel.com/http://ignitetravel.com/http://ignitetravel.com/http://ignitetravel.com/http://ignitetravel.com/http://ignitetravel.com/
8/17/2019 RC MobileFriendlyRewards 300915 0915 2
4/12
Members/EditMember { "MemberId": 123, "Title": "Mr", "FirstName": "Lenny", "Surname": "Whitehead", "DateOfBirth":"2015-09-29T11:24:44.7322072+10:00", "Address": "95 Marine Parade", "Suburb": "Southport", "State": "Queensland",
"PostCode": "4215", "Country": "Australia", "PhoneNumber": "0435499700", "AlternativeNumber": "", "EmailAddress": "lenny.whitehead3@ignitetra
",vel.com "UserName": "lenny_promo_29", "CurrencyId": 1, "SerialNumber": null, "IsActive": true, "IsReceiveEmail": true, "PromotionId": 28, "FavDest": null, "DateCreated": null, "CreationMethod": null}
{ "MemberId": 123, "Title": "Mr", "FirstName": "Lenny", "Surname": "Whitehead", "DateOfBirth":"2015-09-29T11:24:44.7322072+10:00", "Address": "95 Marine Parade", "Suburb": "Southport", "State": "Queensland",
"PostCode": "4215", "Country": "Australia", "PhoneNumber": "0435499700", "AlternativeNumber": "", "EmailAddress": "lenny.whitehead3@ignitetravel.c
",om "UserName": "lenny_promo_29", "CurrencyId": 1, "SerialNumber": null, "IsActive": true, "IsReceiveEmail": true, "PromotionId": 28, "FavDest": null, "DateCreated": null, "CreationMethod": null}
Members/ChangeMemberPassword {
"MemberId": 12345,
"NewPassword": "MyPas&&32"
}
{
"true"
}
api/rewards/accountBalance {
"MemberId": 12345,
"PromotionAlias": "Rewards"
}
{
"CurrencyDescription": "Australian Dollars",
"DisplayRewards": true,
"RewardType": 1,
"ChequePromotions": {
"Rewards.Core.EntityClasses.PromotionEntity":[
{
"_fieldsData": [
[
100,
100
],
[
"2015-08-18T08:54:00",
"2015-08-18T08:54:00"
],
[
2101,
2101
],
[
http://ignitetravel.com/http://ignitetravel.com/http://ignitetravel.com/http://ignitetravel.com/http://ignitetravel.com/http://ignitetravel.com/http://ignitetravel.com/http://ignitetravel.com/
8/17/2019 RC MobileFriendlyRewards 300915 0915 2
5/12
100,
100
],
[
"2017-08-19T14:14:00",
"2017-08-19T14:14:00"
],
[
"2018-02-19T14:14:00",
"2018-02-19T14:14:00"
],
[
"9058460018 ",
"9058460018 "
],
[
34361,
34361
]
],
"_fieldsFlags": [
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false
],
"_fieldsState": 1,
"_fieldsIsDirty": false,
8/17/2019 RC MobileFriendlyRewards 300915 0915 2
6/12
"_name": "ChequeSummaryEntity",
"_isNew": false,
"_validator": null,
"_objectID":"2e6929ee-dbea-465e-a6a7-03e0d40c85c5",
"_relatedEntitySyncInfos": null,
"_field2RelatedEntity": null,
"_concurrencyPredicateFactoryToUse":null,
"_dataErrorInfoError": "",
"_dataErrorInfoErrorsPerField": null,
"_typeDefaultValueProvider": null,
"_authorizerToUse": null,
"_auditorToUse": null
}
]
},
"Total": 1451
}
api/rewards/accountHistory {
"MemberId": 12345,
"PromotionAlias": "Rewards"
}
{
"MemberCurrency": "Australian Dollars",
"DisplayRewards": true,
"RewardType": 1,
"ChequePromotions": null,
"ChequeTransactionSummary": {
"Rewards.Core.EntityClasses.PromotionEntity":[
{
"Summary": {
"_fieldsData": [
[
500,
500
],
[
"2015-08-19T14:04:00",
"2015-08-19T14:04:00"
],
[
1,
1
8/17/2019 RC MobileFriendlyRewards 300915 0915 2
7/12
],
[
500,
500
],
[
"2017-08-19T14:14:00",
"2017-08-19T14:14:00"
],
[
"2018-02-19T14:14:00",
"2018-02-19T14:14:00"
],
[
"1144214783 ",
"1144214783 "
],
[
34361,
34361
]
],
"_fieldsFlags": [
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false
],
8/17/2019 RC MobileFriendlyRewards 300915 0915 2
8/12
"_fieldsState": 1,
"_fieldsIsDirty": false,
"_name": "ChequeSummaryEntity",
"_isNew": false,
"_validator": null,
"_objectID":
"9cf6421c-07fc-4690-bc8a-9fef7669d45f",
"_relatedEntitySyncInfos": null,
"_field2RelatedEntity": null,
"_concurrencyPredicateFactoryToUse":null,
"_dataErrorInfoError": "",
"_dataErrorInfoErrorsPerField": null,
"_typeDefaultValueProvider": null,
"_authorizerToUse": null,
"_auditorToUse": null
},
"Transactions": [
{
"Actioned": "2015-08-19T14:04:00",
"BookingId": 0,
"MemberName": "",
"Assignment": false,
"LocationExtrasOnly": false,
"Value": 500
}
]
}
]
},
"TotalRewards": 4451,
"RewardsExpired": 0,
"RewardsRedeemed": 3000,
"RewardsAvailable": 1451
}
api/rewards/registerCheque {
"MemberId": 12345,
"SerialNumber": "8787898789878"
}
{
"true"
}
8/17/2019 RC MobileFriendlyRewards 300915 0915 2
9/12
api/rewards/transferRewards {
"TransferringMemberId": 12345,
"TargetMemberId": 23322,
"SerialNumber": "8787898789878",
"TargetMemberSurname": "Whitehead",
"TransferValue": 500
}
{
"A message indicating the results"
}
api/productvoucher/orderVoucher {
"ProductId": 123,
"MemberId": 48872,
"Quantity": 100,
"CreditCardDTO": [
{
"CardType": "AMEX",
"CardExpiryMonth": 4,
"CardExpiryYear": 16,
"CardName": "LeonardWhitehead",
"CardNumber": "4585944447376642",
"CardNumberSanitized":"4585XXXXXXX6642",
"CardCCV": 123
}
]
}
{
"A message indicating the results"
}
api/productvoucher/voucherUsage {
"MemberId": 12345,
"ProductId": 23322,
"Quanity": 10
}
{
"SerialNumber": "162726211",
"AmountAvailable": 100,
"AmountToBeUsed": 20,
"AmountRemaining": 80,
"TotalRewardsAvailable": 100,
"CurrencyDescription": "Australian Dollar",
"CashPartPayment": false,
"CashAmount": 0
}
8/17/2019 RC MobileFriendlyRewards 300915 0915 2
10/12
api/booking/payment {
"bookingid": 1,
"advertid": 1,
"netrateoverride": 100,
"advertcode": "test",
"bookingresortextras": [
{
"description": "testing1",
"resortextraid": 1,
"totalcost": 100,
"quantity": 1
},
{
"description": "testing1",
"resortextraid": 1,
"totalcost": 100,
"quantity": 1
}
],
"bookinglocationextrarewards": [
{
"description": "testing",
"locationextraid": 111,
"longdescription": "testiiiiiiiiiing",
"maxrewards": 10,
"publishedrate": 10,
"quantity": 2,
"rewardstouse": 1002,
"termscondition": "termsandcondition",
"usefrom": "015-09-30",
"useto": "2015-09-30",
"youpay": 123
}
]
}
{
"message": "message",
"issuccess": "false",
"paymentid": "null"
}
api/booking/cancel bookingid (integer) boolean
8/17/2019 RC MobileFriendlyRewards 300915 0915 2
11/12
api/booking/create { "isupdate": true, "resortid": 1, "locationid": 1002, "roomtype": "room type", "rewardstypeid": "null", "memberid": "null", "selectedpromotion": 0, "selectedrateid": 0, "checkin": "2015-12-25",
"bookingid": "null", "numberofnights": 2, "adults": 2, "children": 2, "infants": 5, "user": "null", "title": "Mr.", "givennames": "Willie", "surname": "Wonka", "dob": "2000-01-01", "address": "ChocolateFactory", "suburb": "Urbandub", "state": "UnitedState", "postcode": "1772", "country": "Dressrosa", "contactphone": "09123123123",
"alternatephone": "32132132190", "email": "email@ ",email.com "notes": "thisisanote", "specialrequest": "request", "currency": 2, "promotion": 1, "advertcode": "ABC", "advertid": 1}
{
"message": "message",
"issuccess": "false",
"seasonid": "null",
"bookingid": 1
}
http://email.com/http://email.com/
8/17/2019 RC MobileFriendlyRewards 300915 0915 2
12/12
api/accommodation/availability {
"searchfrom": "2015-01-01",
"resortid": 1,
"ignoreconsultantrate": "false",
"promotionid": 1,
"currencyid": 1,
"availability": [
{
"day": 1,
"month": 2,
"year": 2016,
"resortid": 1,
"nights": 2,
"promotionid": 1,
"publishedratetitle": "sample",
"rewardtitle": "reward title",
"yousavetitle": "yousave title",
"resortname": "name of resort",
"locationname": "name of location",
"currencydescription": "currencydescription",
"resortimage": "blah_blah.png",
"resortcollectionimages":"",
"rating": "rating",
"phone": "phone",
"unavailable": "true"
}
]
}
{
"searchfrom": "2015-01-01",
"resortid": 1,
"ignoreconsultantrate": "false",
"promotionid": 1,
"currencyid": 1,
"availability": [
{
"day": 1,
"month": 2,
"year": 2016,
"resortid": 1,
"nights": 2,
"promotionid": 1,
"publishedratetitle": "sample",
"rewardtitle": "reward title",
"yousavetitle": "yousave title",
"resortname": "name of resort",
"locationname": "name of location",
"currencydescription": "currency description",
"resortimage": "blah_blah.png",
"resortcollectionimages":"",
"rating": "rating",
"phone": "phone",
"unavailable": "true",
"rateavailabilities": null
}
]
}
Not Doing
The slider control for availabilty will not be reproduced in the mobile friendly verision