@ -0,0 +1,27 @@ | |||||
| |||||
Microsoft Visual Studio Solution File, Format Version 12.00 | |||||
# Visual Studio Version 17 | |||||
VisualStudioVersion = 17.0.31611.283 | |||||
MinimumVisualStudioVersion = 10.0.40219.1 | |||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "GMCabsDriverAssistantSolution", "GMCabsDriverAssistantSolution\GMCabsDriverAssistantSolution.csproj", "{0EDC2645-979C-4F67-87E5-A9D842F11175}" | |||||
EndProject | |||||
Global | |||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution | |||||
Debug|Any CPU = Debug|Any CPU | |||||
Release|Any CPU = Release|Any CPU | |||||
EndGlobalSection | |||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution | |||||
{0EDC2645-979C-4F67-87E5-A9D842F11175}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | |||||
{0EDC2645-979C-4F67-87E5-A9D842F11175}.Debug|Any CPU.Build.0 = Debug|Any CPU | |||||
{0EDC2645-979C-4F67-87E5-A9D842F11175}.Debug|Any CPU.Deploy.0 = Debug|Any CPU | |||||
{0EDC2645-979C-4F67-87E5-A9D842F11175}.Release|Any CPU.ActiveCfg = Release|Any CPU | |||||
{0EDC2645-979C-4F67-87E5-A9D842F11175}.Release|Any CPU.Build.0 = Release|Any CPU | |||||
{0EDC2645-979C-4F67-87E5-A9D842F11175}.Release|Any CPU.Deploy.0 = Release|Any CPU | |||||
EndGlobalSection | |||||
GlobalSection(SolutionProperties) = preSolution | |||||
HideSolutionNode = FALSE | |||||
EndGlobalSection | |||||
GlobalSection(ExtensibilityGlobals) = postSolution | |||||
SolutionGuid = {61F7FB11-1E47-470C-91E2-47F8143E1572} | |||||
EndGlobalSection | |||||
EndGlobal |
@ -0,0 +1,20 @@ | |||||
<?xml version = "1.0" encoding = "UTF-8" ?> | |||||
<Application xmlns="http://schemas.microsoft.com/dotnet/2021/maui" | |||||
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" | |||||
xmlns:local="clr-namespace:GMCabsDriverAssistantSolution" | |||||
x:Class="GMCabsDriverAssistantSolution.App"> | |||||
<Application.Resources> | |||||
<ResourceDictionary x:Name="dictionary"> | |||||
<Color x:Key="Primary">#126db5</Color> | |||||
<Style TargetType="Button"> | |||||
<Setter Property="BackgroundColor" Value="{StaticResource Primary}" /> | |||||
<Setter Property="CornerRadius"> | |||||
<OnPlatform x:TypeArguments="x:Int32"> | |||||
<On Platform="Android">30</On> | |||||
<On Platform="iOS">24</On> | |||||
</OnPlatform> | |||||
</Setter> | |||||
</Style> | |||||
</ResourceDictionary> | |||||
</Application.Resources> | |||||
</Application> |
@ -0,0 +1,219 @@ | |||||
using GMCabsDriverAssistant.Models; | |||||
using GMCabsDriverAssistant.Services; | |||||
using GMCabsDriverAssistant.Utils; | |||||
using GMCabsDriverAssistantSolution.Styles; | |||||
using Plugin.FirebasePushNotification; | |||||
using System.Diagnostics; | |||||
namespace GMCabsDriverAssistantSolution; | |||||
public partial class App : Application | |||||
{ | |||||
private static SQLiteDatabaseService database; | |||||
public static SQLiteDatabaseService Database | |||||
{ | |||||
get | |||||
{ | |||||
if (database == null) | |||||
{ | |||||
string databasePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "AvailableBooking.db3"); | |||||
database = new SQLiteDatabaseService(databasePath); | |||||
} | |||||
return database; | |||||
} | |||||
} | |||||
public App() | |||||
{ | |||||
InitializeComponent(); | |||||
dictionary.MergedDictionaries.Add(PhoneLayoutStyle.SharedInstance); | |||||
MainPage = new AppShell(); | |||||
} | |||||
[Obsolete] | |||||
protected override async void OnStart() | |||||
{ | |||||
try | |||||
{ | |||||
ShareConstant.IsInForeground = true; | |||||
Preferences.Set(SecureStorageData.InitLaunched, ""); | |||||
CrossFirebasePushNotification.Current.Subscribe("all"); | |||||
CrossFirebasePushNotification.Current.OnTokenRefresh += (s, e) => | |||||
{ | |||||
Debug.WriteLine($"Token: {e.Token}"); | |||||
}; | |||||
Debug.WriteLine($"TOKEN: {CrossFirebasePushNotification.Current.Token}"); | |||||
CrossFirebasePushNotification.Current.OnNotificationReceived += (s, e) => | |||||
{ | |||||
try | |||||
{ | |||||
Debug.WriteLine("Received"); | |||||
if (e.Data.ContainsKey("category")) | |||||
{ | |||||
if (e.Data["category"].ToString().Equals("BookingCancelled")) | |||||
{ | |||||
Device.BeginInvokeOnMainThread(() => | |||||
{ | |||||
CancelledBookingResponseDto cancelledBookingResponseDto = new CancelledBookingResponseDto(); | |||||
cancelledBookingResponseDto.PickUPAddress = e.Data["fromAddress"].ToString(); | |||||
cancelledBookingResponseDto.DropUpAddress = e.Data["toAddress"].ToString(); | |||||
MessagingCenter.Send(this, nameof(App), cancelledBookingResponseDto); | |||||
//if (Device.RuntimePlatform == Device.iOS) | |||||
//{ | |||||
// if (ShareConstant.IsInForeground) | |||||
// { | |||||
// var player = CrossSimpleAudioPlayer.Current; | |||||
// player.Load("system.wav"); | |||||
// player.Play(); | |||||
// } | |||||
//} | |||||
}); | |||||
} | |||||
else if (e.Data["category"].ToString().Equals("BookingClearAccepted")) | |||||
{ | |||||
Device.BeginInvokeOnMainThread(() => | |||||
{ | |||||
MessagingCenter.Send(this, "ClearAcceptance", string.Empty); | |||||
}); | |||||
} | |||||
else if (e.Data["category"].ToString().Equals("CouponRedeemed")) | |||||
{ | |||||
Device.BeginInvokeOnMainThread(() => | |||||
{ | |||||
CouponDto coupon = new CouponDto(); | |||||
coupon.Id = e.Data["couponid"].ToString(); | |||||
coupon.Status = e.Data["status"].ToString(); | |||||
MessagingCenter.Send(this, nameof(App), coupon); | |||||
}); | |||||
} | |||||
else if (e.Data["category"].ToString().Equals("NotificationAvailable")) | |||||
{ | |||||
Device.BeginInvokeOnMainThread(() => | |||||
{ | |||||
NotificationDto notification = new NotificationDto(); | |||||
notification.Id = e.Data["id"].ToString(); | |||||
notification.Subject = e.Data["subject"].ToString(); | |||||
notification.Body = e.Data["notification_body"].ToString(); | |||||
MessagingCenter.Send(this, nameof(App), notification); | |||||
//if (Device.RuntimePlatform == Device.iOS) | |||||
//{ | |||||
// if (ShareConstant.IsInForeground) | |||||
// { | |||||
// var player = CrossSimpleAudioPlayer.Current; | |||||
// player.Load("system.wav"); | |||||
// player.Play(); | |||||
// } | |||||
//} | |||||
}); | |||||
} | |||||
else if (e.Data["category"].ToString().Equals("IsTabletInstallation")) | |||||
{ | |||||
Debug.WriteLine($"{e.Data["category"]}"); | |||||
var istablet = Convert.ToBoolean(e.Data["istabletinstallation"].ToString()); | |||||
Preferences.Set("IsTablet", istablet); | |||||
MessagingCenter.Send(this, nameof(App), e.Data["category"].ToString()); | |||||
} | |||||
else if (e.Data["category"].ToString().Equals("DriverAlertNotification")) | |||||
{ | |||||
Device.BeginInvokeOnMainThread(() => | |||||
{ | |||||
Debug.WriteLine($"{e.Data["category"]}"); | |||||
MessagingCenter.Send(this, nameof(App), e.Data["category"].ToString()); | |||||
}); | |||||
} | |||||
else if (e.Data["category"].ToString().Equals("CouponAvailable")) | |||||
{ | |||||
Device.BeginInvokeOnMainThread(() => | |||||
{ | |||||
Debug.WriteLine($"{e.Data["category"]}"); | |||||
MessagingCenter.Send(this, nameof(App), e.Data["category"].ToString()); | |||||
//if (Device.RuntimePlatform == Device.iOS) | |||||
//{ | |||||
// if (ShareConstant.IsInForeground) | |||||
// { | |||||
// var player = CrossSimpleAudioPlayer.Current; | |||||
// player.Load("system.wav"); | |||||
// player.Play(); | |||||
// } | |||||
//} | |||||
}); | |||||
} | |||||
else if (e.Data["category"].ToString().Equals("BookingAvailable")) | |||||
{ | |||||
Device.BeginInvokeOnMainThread(() => | |||||
{ | |||||
Debug.WriteLine($"{e.Data["category"]}"); | |||||
MessagingCenter.Send(this, nameof(App), e.Data["category"].ToString()); | |||||
//if (Device.RuntimePlatform == Device.iOS) | |||||
//{ | |||||
// if (ShareConstant.IsInForeground) | |||||
// { | |||||
// var player = CrossSimpleAudioPlayer.Current; | |||||
// player.Load("newbooking.wav"); | |||||
// player.Play(); | |||||
// } | |||||
//} | |||||
}); | |||||
} | |||||
else | |||||
{ | |||||
Device.BeginInvokeOnMainThread(() => | |||||
{ | |||||
Debug.WriteLine($"{e.Data["category"]}"); | |||||
MessagingCenter.Send(this, nameof(App), e.Data["category"].ToString()); | |||||
}); | |||||
} | |||||
} | |||||
else if (e.Data.ContainsKey("coupon_category")) | |||||
{ | |||||
if (e.Data["coupon_category"].ToString().Equals("CouponRedeemed")) | |||||
{ | |||||
Device.BeginInvokeOnMainThread(() => | |||||
{ | |||||
MessagingCenter.Send(this, nameof(App), e.Data["coupon_category"].ToString()); | |||||
}); | |||||
} | |||||
} | |||||
} | |||||
catch (Exception ex) | |||||
{ | |||||
} | |||||
}; | |||||
} | |||||
catch (Exception ex) | |||||
{ | |||||
Debug.WriteLine($"Onstart Error Entry: {ex.StackTrace}"); | |||||
} | |||||
} | |||||
protected override void OnSleep() | |||||
{ | |||||
try | |||||
{ | |||||
ShareConstant.IsInForeground = false; | |||||
} | |||||
catch (Exception ex) | |||||
{ | |||||
Debug.WriteLine($"Onsleep Error Entry: {ex.StackTrace}"); | |||||
} | |||||
} | |||||
protected override void OnResume() | |||||
{ | |||||
try | |||||
{ | |||||
ShareConstant.IsInForeground = true; | |||||
} | |||||
catch (Exception ex) | |||||
{ | |||||
Debug.WriteLine($"OnResume Error Entry: {ex.StackTrace}"); | |||||
} | |||||
} | |||||
} |
@ -0,0 +1,240 @@ | |||||
<?xml version="1.0" encoding="UTF-8"?> | |||||
<Shell xmlns="http://schemas.microsoft.com/dotnet/2021/maui" | |||||
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" | |||||
xmlns:local="clr-namespace:GMCabsDriverAssistantSolution.Views" | |||||
Title="GMCabsDriverAssistant" | |||||
xmlns:vm="clr-namespace:GMCabsDriverAssistant.ViewModels" | |||||
x:Class="GMCabsDriverAssistantSolution.AppShell" | |||||
FlyoutWidth="220" | |||||
Visual="Material"> | |||||
<!--<Shell.BindingContext> | |||||
<vm:AppShellViewModel /> | |||||
</Shell.BindingContext>--> | |||||
<!-- | |||||
The overall app visual hierarchy is defined here, along with navigation. | |||||
https://docs.microsoft.com/xamarin/xamarin-forms/app-fundamentals/shell/ | |||||
--> | |||||
<Shell.Resources> | |||||
<ResourceDictionary> | |||||
<Style x:Key="BaseStyle" TargetType="Element"> | |||||
<Setter Property="Shell.BackgroundColor" Value="{StaticResource Primary}" /> | |||||
<Setter Property="Shell.ForegroundColor" Value="White" /> | |||||
<Setter Property="Shell.TitleColor" Value="White" /> | |||||
<Setter Property="Shell.DisabledColor" Value="#B4FFFFFF" /> | |||||
<Setter Property="Shell.UnselectedColor" Value="#95FFFFFF" /> | |||||
<Setter Property="Shell.TabBarBackgroundColor" Value="{StaticResource Primary}" /> | |||||
<Setter Property="Shell.TabBarForegroundColor" Value="White"/> | |||||
<Setter Property="Shell.TabBarUnselectedColor" Value="#95FFFFFF"/> | |||||
<Setter Property="Shell.TabBarTitleColor" Value="White"/> | |||||
</Style> | |||||
<Style TargetType="TabBar" BasedOn="{StaticResource BaseStyle}" x:Key="TabBar" /> | |||||
<Style TargetType="FlyoutItem" BasedOn="{StaticResource BaseStyle}" x:Key="FlyoutItem"/> | |||||
<!-- | |||||
Default Styles for all Flyout Items | |||||
https://docs.microsoft.com/xamarin/xamarin-forms/app-fundamentals/shell/flyout#flyoutitem-and-menuitem-style-classes | |||||
--> | |||||
<Style Class="FlyoutItemLabelStyle" TargetType="Label" x:Key="FlyoutItemLabelStyle"> | |||||
<Setter Property="TextColor" Value="White"></Setter> | |||||
</Style> | |||||
<Style Class="FlyoutItemLayoutStyle" TargetType="Layout" ApplyToDerivedTypes="True" x:Key="FlyoutItemLayoutStyle"> | |||||
<Setter Property="VisualStateManager.VisualStateGroups"> | |||||
<VisualStateGroupList> | |||||
<VisualStateGroup x:Name="CommonStates"> | |||||
<VisualState x:Name="Normal"> | |||||
<VisualState.Setters> | |||||
<Setter Property="BackgroundColor" Value="{x:OnPlatform WinUI=Transparent, iOS=White}"/> | |||||
<Setter TargetName="FlyoutItemLabel" Property="Label.TextColor" Value="{StaticResource Primary}" /> | |||||
</VisualState.Setters> | |||||
</VisualState> | |||||
<VisualState x:Name="Selected"> | |||||
<VisualState.Setters> | |||||
<Setter Property="BackgroundColor" Value="{StaticResource Primary}" /> | |||||
</VisualState.Setters> | |||||
</VisualState> | |||||
</VisualStateGroup> | |||||
</VisualStateGroupList> | |||||
</Setter> | |||||
</Style> | |||||
<!-- | |||||
Custom Style you can apply to any Flyout Item | |||||
--> | |||||
<Style Class="MenuItemLayoutStyle" TargetType="Layout" ApplyToDerivedTypes="True" x:Key="MenuItemLayoutStyle"> | |||||
<Setter Property="VisualStateManager.VisualStateGroups"> | |||||
<VisualStateGroupList> | |||||
<VisualStateGroup x:Name="CommonStates"> | |||||
<VisualState x:Name="Normal"> | |||||
<VisualState.Setters> | |||||
<Setter TargetName="FlyoutItemLabel" Property="Label.TextColor" Value="{StaticResource Primary}" /> | |||||
</VisualState.Setters> | |||||
</VisualState> | |||||
</VisualStateGroup> | |||||
</VisualStateGroupList> | |||||
</Setter> | |||||
</Style> | |||||
</ResourceDictionary> | |||||
</Shell.Resources> | |||||
<ShellItem Route="PermissionPage" FlyoutItemIsVisible="False" > | |||||
<!--<ShellContent ContentTemplate="{DataTemplate local:PermissionCheckPage}" />--> | |||||
</ShellItem> | |||||
<ShellItem Route="splashpage" FlyoutItemIsVisible="false" > | |||||
<!--<ShellContent ContentTemplate="{DataTemplate local:SplashPage}" />--> | |||||
</ShellItem> | |||||
<ShellItem Route="LoginPage" FlyoutItemIsVisible="False" > | |||||
<ShellContent ContentTemplate="{DataTemplate local:LoginPage}" /> | |||||
</ShellItem> | |||||
<!-- | |||||
When the Flyout is visible this defines the content to display in the flyout. | |||||
FlyoutDisplayOptions="AsMultipleItems" will create a separate flyout item for each child element | |||||
https://docs.microsoft.com/dotnet/api/xamarin.forms.shellgroupitem.flyoutdisplayoptions?view=xamarin-forms | |||||
--> | |||||
<FlyoutItem x:Name="homePageFlyout" IsVisible="{OnIdiom Phone=True,Tablet=False}" Title="Home" Icon="ic_menu_home.png"> | |||||
<ShellContent Route="HomePage" ContentTemplate="{DataTemplate local:HomePage}"/> | |||||
</FlyoutItem> | |||||
<!--<FlyoutItem x:Name="homePageTabletFlyout" Shell.FlyoutItemIsVisible="{Binding IsCanViewHome}" Title="Home" Icon="ic_menu_home.png"> | |||||
<ShellContent Route="HomePageTablet" ContentTemplate="{DataTemplate local:HomePageTablet}"/> | |||||
</FlyoutItem>--> | |||||
<!--<FlyoutItem Title="Coupons" Icon="ic_menu_end_shift.png"> | |||||
<ShellContent Route="CouponsPage" ContentTemplate="{DataTemplate local:CouponsPage}" /> | |||||
</FlyoutItem>--> | |||||
<!--<FlyoutItem Title="Rydo" Icon="ic_menu_rydo.png"> | |||||
<ShellContent Route="AcceptedFutureBookingsPage" ContentTemplate="{DataTemplate local:AcceptedFutureBookingsPage}" /> | |||||
</FlyoutItem>--> | |||||
<!--<FlyoutItem Title="Scan Driving Licence" Icon="ic_outline_document_scanner_black_24.png"> | |||||
<ShellContent Route="ScanDrivingLicencePage" ContentTemplate="{DataTemplate local:ScanDrivingLicencePage}" /> | |||||
</FlyoutItem>--> | |||||
<!--<FlyoutItem Title="Scan Voucher" Icon="ic_outline_document_scanner_black_24.png"> | |||||
<ShellContent Route="ScanVoucherPage" ContentTemplate="{DataTemplate local:ScanVoucherPage}" /> | |||||
</FlyoutItem>--> | |||||
<!-- When the Flyout is visible this will be a menu item you can tie a click behavior to --> | |||||
<MenuItem Text="Coupons" x:Name="Coupons" StyleClass="MenuItemLayoutStyle" Clicked="Coupons_Clicked" IconImageSource="ic_menu_end_shift.png" Shell.FlyoutItemIsVisible="{Binding IsVisibleCoupons}"> | |||||
</MenuItem> | |||||
<MenuItem Text="Rydo" x:Name="Rydo" Shell.FlyoutItemIsVisible="{Binding IsVisibleRydo}" StyleClass="MenuItemLayoutStyle" Clicked="Rydo_Clicked" IconImageSource="ic_menu_rydo.png"> | |||||
</MenuItem> | |||||
<MenuItem Text="Licence Scan" x:Name="ScanDrivingLicence" Shell.FlyoutItemIsVisible="{Binding IsVisibleDrivingLicenceScan}" StyleClass="MenuItemLayoutStyle" Clicked="ScanDrivingLicence_Clicked" IconImageSource="ic_menu_licence_scan.png"> | |||||
</MenuItem> | |||||
<MenuItem Text="Voucher Scan" x:Name="ScanVoucher" Shell.FlyoutItemIsVisible="{Binding IsVisibleVoucherScan}" StyleClass="MenuItemLayoutStyle" Clicked="ScanVoucher_Clicked" IconImageSource="ic_menu_voucher_scan.png"> | |||||
</MenuItem> | |||||
<MenuItem Text="Settings" x:Name="Settings" StyleClass="MenuItemLayoutStyle" Clicked="Settings_Clicked" IconImageSource="ic_menu_settings.png" Shell.FlyoutItemIsVisible="{Binding IsVisibleSettings}"> | |||||
</MenuItem> | |||||
<!--<MenuItem Text="Job History" x:Name="JobHistory" StyleClass="MenuItemLayoutStyle" Clicked="JobHistory_Clicked" IconImageSource="ic_menu_end_shift.png" Shell.FlyoutItemIsVisible="{Binding IsVisibleJobHistory}"> | |||||
</MenuItem>--> | |||||
<!--<MenuItem Text="My Account" x:Name="MyAccount" StyleClass="MenuItemLayoutStyle" Clicked="MyAccount_Clicked" IconImageSource="ic_menu_settings.png" Shell.FlyoutItemIsVisible="{Binding IsVisibleMyAccount}"> | |||||
</MenuItem>--> | |||||
<!--<MenuItem Text="My Shifts" x:Name="MyShifts" StyleClass="MenuItemLayoutStyle" Clicked="MyShifts_Clicked" IconImageSource="ic_menu_voucher_scan.png" Shell.FlyoutItemIsVisible="{Binding IsVisibleMyShifts}"> | |||||
</MenuItem>--> | |||||
<MenuItem Text="Logout" StyleClass="MenuItemLayoutStyle" Clicked="LogoutClicked"> | |||||
</MenuItem> | |||||
<!-- | |||||
TabBar lets you define content that won't show up in a flyout menu. When this content is active | |||||
the flyout menu won't be available. This is useful for creating areas of the application where | |||||
you don't want users to be able to navigate away from. If you would like to navigate to this | |||||
content you can do so by calling | |||||
await Shell.Current.GoToAsync("//LoginPage"); | |||||
--> | |||||
<TabBar> | |||||
<ShellContent Route="LoginPage" ContentTemplate="{DataTemplate local:LoginPage}" /> | |||||
</TabBar> | |||||
<Shell.FlyoutHeaderTemplate> | |||||
<DataTemplate> | |||||
<Grid ColumnDefinitions="0.3*,0.9*" BackgroundColor="{StaticResource Primary}" HeightRequest="122" Padding="16"> | |||||
<Image Source="driver.png" | |||||
VerticalOptions="End"/> | |||||
<StackLayout Grid.Column="1" Orientation="Vertical" VerticalOptions="End" Padding="0" Spacing="0"> | |||||
<Label Text="{Binding DriverName}" TextColor="White" Margin="0" Padding="0"/> | |||||
<Label Text="{Binding DriverMobileNumber}" TextColor="White" FontSize="20" Margin="0" Padding="0"/> | |||||
<Label Text="{Binding VersionNumber}" TextColor="White" FontSize="15" Margin="0" Padding="0" /> | |||||
</StackLayout> | |||||
</Grid> | |||||
</DataTemplate> | |||||
</Shell.FlyoutHeaderTemplate> | |||||
<Shell.ItemTemplate> | |||||
<DataTemplate> | |||||
<Grid ColumnDefinitions="0.2*,0.8*" BackgroundColor="#FFFFFF" Padding="8"> | |||||
<Image Source="{Binding FlyoutIcon}" | |||||
HeightRequest="24" | |||||
Aspect="AspectFit"/> | |||||
<Label Grid.Column="1" | |||||
Text="{Binding Title}" | |||||
TextColor="Black" | |||||
FontSize="24" | |||||
VerticalTextAlignment="Start" /> | |||||
</Grid> | |||||
</DataTemplate> | |||||
</Shell.ItemTemplate> | |||||
<Shell.MenuItemTemplate> | |||||
<DataTemplate> | |||||
<Grid ColumnDefinitions="0.2*,0.8*" BackgroundColor="#FFFFFF" Padding="8"> | |||||
<Image Source="{Binding Icon}" | |||||
HeightRequest="24" | |||||
WidthRequest="24" | |||||
Aspect="AspectFit"/> | |||||
<Label Grid.Column="1" | |||||
Text="{Binding Text}" | |||||
TextColor="Black" | |||||
FontSize="24" | |||||
VerticalTextAlignment="Start" /> | |||||
</Grid> | |||||
</DataTemplate> | |||||
</Shell.MenuItemTemplate> | |||||
<Shell.FlyoutFooterTemplate> | |||||
<DataTemplate> | |||||
<Label BackgroundColor="#FFFFFF" | |||||
Text="Privacy Policy" | |||||
TextColor="Black" | |||||
FontSize="16" | |||||
Padding="16" | |||||
HorizontalTextAlignment="Center"> | |||||
<Label.GestureRecognizers> | |||||
<TapGestureRecognizer Command="{Binding PrivacyPolicyClickCommand}" /> | |||||
</Label.GestureRecognizers> | |||||
</Label> | |||||
</DataTemplate> | |||||
</Shell.FlyoutFooterTemplate> | |||||
<!-- Optional Templates | |||||
// These may be provided inline as below or as separate classes. | |||||
// This header appears at the top of the Flyout. | |||||
// https://docs.microsoft.com/xamarin/xamarin-forms/app-fundamentals/shell/flyout#flyout-header | |||||
<Shell.FlyoutHeaderTemplate> | |||||
<DataTemplate> | |||||
<Grid>ContentHere</Grid> | |||||
</DataTemplate> | |||||
</Shell.FlyoutHeaderTemplate> | |||||
// ItemTemplate is for ShellItems as displayed in a Flyout | |||||
// https://docs.microsoft.com/xamarin/xamarin-forms/app-fundamentals/shell/flyout#define-flyoutitem-appearance | |||||
<Shell.ItemTemplate> | |||||
<DataTemplate> | |||||
<ContentView> | |||||
Bindable Properties: Title, Icon | |||||
</ContentView> | |||||
</DataTemplate> | |||||
</Shell.ItemTemplate> | |||||
// MenuItemTemplate is for MenuItems as displayed in a Flyout | |||||
// https://docs.microsoft.com/xamarin/xamarin-forms/app-fundamentals/shell/flyout#define-menuitem-appearance | |||||
<Shell.MenuItemTemplate> | |||||
<DataTemplate> | |||||
<ContentView> | |||||
Bindable Properties: Text, Icon | |||||
</ContentView> | |||||
</DataTemplate> | |||||
</Shell.MenuItemTemplate> | |||||
--> | |||||
</Shell> |
@ -0,0 +1,236 @@ | |||||
using GMCabsDriverAssistantSolution.Views; | |||||
using System; | |||||
using System.Collections; | |||||
using System.Collections.Generic; | |||||
using System.Diagnostics; | |||||
using System.Threading.Tasks; | |||||
using Microsoft.Maui; | |||||
using Microsoft.Maui.Controls; | |||||
using GMCabsDriverAssistant.ViewModels; | |||||
using GMCabsDriverAssistant.Services; | |||||
using GMCabsDriverAssistant.Utils; | |||||
using Sentry; | |||||
using GMCabsDriverAssistant.Messages; | |||||
namespace GMCabsDriverAssistantSolution; | |||||
public partial class AppShell : Shell | |||||
{ | |||||
#region Fields | |||||
private readonly AppShellViewModel _viewModel; | |||||
private string imeiNumber; | |||||
private string carNumber; | |||||
#endregion | |||||
#region Properties | |||||
#endregion | |||||
#region Constructor | |||||
public AppShell() | |||||
{ | |||||
InitializeComponent(); | |||||
BindingContext = _viewModel = new AppShellViewModel(this); | |||||
Task.Run(async () => | |||||
{ | |||||
//string couponsPermission = await SecureStorageData.GetSecureStorage(SecureStorageData.CanViewCoupons); | |||||
//if (string.IsNullOrEmpty(couponsPermission)) { couponsPermission = "false"; } | |||||
//string settingsPermission = await SecureStorageData.GetSecureStorage(SecureStorageData.CanViewSettings); | |||||
//if (string.IsNullOrEmpty(settingsPermission)) { settingsPermission = "false"; } | |||||
//string homePermission = await SecureStorageData.GetSecureStorage(SecureStorageData.CanViewHome); | |||||
//if (string.IsNullOrEmpty(homePermission)) { homePermission = "true"; } | |||||
//_viewModel.IsVisibleDrivingLicenceScan = Preferences.Get(SecureStorageData.CanUpdateLicence, false); | |||||
//_viewModel.IsVisibleVoucherScan = Preferences.Get(SecureStorageData.CanScanVouchers, false); | |||||
//_viewModel.IsVisibleRydo = Preferences.Get(SecureStorageData.CanAcceptBookings, false); | |||||
//_viewModel.IsVisibleCoupons = Preferences.Get(SecureStorageData.CanViewCoupons, true); | |||||
//_viewModel.IsVisibleSettings = Preferences.Get(SecureStorageData.CanViewSettings, true); | |||||
//_viewModel.IsCanViewHome = Preferences.Get(SecureStorageData.CanViewHome, false); | |||||
//_viewModel.DriverName = Preferences.Get(SecureStorageData.DriverName, ""); | |||||
//_viewModel.DriverMobileNumber = Preferences.Get("DriverMobileNumber", ""); | |||||
}); | |||||
Routing.RegisterRoute(nameof(LoginPage), typeof(LoginPage)); | |||||
Routing.RegisterRoute(nameof(NewPage1), typeof(NewPage1)); | |||||
//Routing.RegisterRoute(nameof(HomePage), typeof(HomePage)); | |||||
Routing.RegisterRoute(nameof(AdminPasswordPage), typeof(AdminPasswordPage)); | |||||
Routing.RegisterRoute(nameof(TaxiInstallPage), typeof(TaxiInstallPage)); | |||||
Routing.RegisterRoute(nameof(InstallCompletePage), typeof(InstallCompletePage)); | |||||
Routing.RegisterRoute(nameof(UserRegistrationGenerateOtpPage), typeof(UserRegistrationGenerateOtpPage)); | |||||
Routing.RegisterRoute(nameof(UserSignUpPage), typeof(UserSignUpPage)); | |||||
Routing.RegisterRoute(nameof(UserRegistrationVerifyOtpPage), typeof(UserRegistrationVerifyOtpPage)); | |||||
Routing.RegisterRoute(nameof(UserRegistrationUpdateDriverPinPage), typeof(UserRegistrationUpdateDriverPinPage)); | |||||
Routing.RegisterRoute(nameof(CouponsPage), typeof(CouponsPage)); | |||||
Routing.RegisterRoute(nameof(CouponsV2Page), typeof(CouponsV2Page)); | |||||
Routing.RegisterRoute(nameof(ScanDrivingLicencePage), typeof(ScanDrivingLicencePage)); | |||||
Routing.RegisterRoute(nameof(ScanVoucherPage), typeof(ScanVoucherPage)); | |||||
Routing.RegisterRoute(nameof(SettingsPage), typeof(SettingsPage)); | |||||
//Routing.RegisterRoute(nameof(BookingsPage), typeof(BookingsPage)); | |||||
//Routing.RegisterRoute(nameof(BookingDetailsPage), typeof(BookingDetailsPage)); | |||||
//Routing.RegisterRoute(nameof(AcceptBookingPage), typeof(AcceptBookingPage)); | |||||
//Routing.RegisterRoute(nameof(CancelledBookingPage), typeof(CancelledBookingPage)); | |||||
Routing.RegisterRoute(nameof(AcceptedFutureBookingsPage), typeof(AcceptedFutureBookingsPage)); | |||||
//Routing.RegisterRoute(nameof(AcceptedFutureBookingDetailPage), typeof(AcceptedFutureBookingDetailPage)); | |||||
//Routing.RegisterRoute(nameof(VoucherScanHistory), typeof(VoucherScanHistory)); | |||||
//Routing.RegisterRoute(nameof(BookingDetailsTabletPage), typeof(BookingDetailsTabletPage)); | |||||
//Routing.RegisterRoute(nameof(OnTripTabletPage), typeof(OnTripTabletPage)); | |||||
//Routing.RegisterRoute(nameof(BookingOnWayTabletPage), typeof(BookingOnWayTabletPage)); | |||||
//Routing.RegisterRoute(nameof(PassgerCollectedPage), typeof(PassgerCollectedPage)); | |||||
//Routing.RegisterRoute(nameof(PassengerDroppedWithNoPaymentMethodIdNoFixedFareTablet), typeof(PassengerDroppedWithNoPaymentMethodIdNoFixedFareTablet)); | |||||
//Routing.RegisterRoute(nameof(PassengerDroppedWithNoPaymentMethodIdAndFixedFareTablet), typeof(PassengerDroppedWithNoPaymentMethodIdAndFixedFareTablet)); | |||||
//Routing.RegisterRoute(nameof(PassengerDroppedWithPaymentMethodIdAndFixedFareTablet), typeof(PassengerDroppedWithPaymentMethodIdAndFixedFareTablet)); | |||||
//Routing.RegisterRoute(nameof(PassengerDroppedWithPaymentMethodIdNoFixedFareTablet), typeof(PassengerDroppedWithPaymentMethodIdNoFixedFareTablet)); | |||||
//Routing.RegisterRoute(nameof(BookingCompletedTabletPage), typeof(BookingCompletedTabletPage)); | |||||
//Routing.RegisterRoute(nameof(NavigateToHomePageTablet), typeof(NavigateToHomePageTablet)); | |||||
//Routing.RegisterRoute(nameof(CancelledBookingTabletPage), typeof(CancelledBookingTabletPage)); | |||||
Routing.RegisterRoute(nameof(ImeiNumberInstallPage), typeof(ImeiNumberInstallPage)); | |||||
//Routing.RegisterRoute(nameof(JobHistoryTabletPage), typeof(JobHistoryTabletPage)); | |||||
//Routing.RegisterRoute(nameof(MyAccountTabletPage), typeof(MyAccountTabletPage)); | |||||
//Routing.RegisterRoute(nameof(MyShiftsTabletPage), typeof(MyShiftsTabletPage)); | |||||
//Routing.RegisterRoute(nameof(AcceptedFutureBookingsTabletPage), typeof(AcceptedFutureBookingsTabletPage)); | |||||
//Routing.RegisterRoute(nameof(AcceptedFutureBookingTabletDetailPage), typeof(AcceptedFutureBookingTabletDetailPage)); | |||||
//if (!Preferences.ContainsKey(Constants.VoucherScanUseFrontCamera)) | |||||
//{ | |||||
// Preferences.Set(Constants.VoucherScanUseFrontCamera, true); | |||||
//} | |||||
imeiNumber = Preferences.Get("imeiNumber", null); | |||||
carNumber = Preferences.Get("carNumber", null); | |||||
var isTablet = Preferences.Get("IsTablet", false); | |||||
//homePageTabletFlyout.IsVisible = true; | |||||
//homePageFlyout.IsVisible = true; | |||||
if (isTablet && !string.IsNullOrWhiteSpace(imeiNumber) && !string.IsNullOrWhiteSpace(carNumber)) | |||||
{ | |||||
ICollection<ResourceDictionary> collection = Application.Current.Resources.MergedDictionaries; | |||||
if (collection != null) | |||||
{ | |||||
collection.Clear(); | |||||
//collection.Add(new TabletLayoutStyle()); | |||||
} | |||||
} | |||||
//if (Device.RuntimePlatform == Device.Android && isTablet && !string.IsNullOrWhiteSpace(imeiNumber) && !string.IsNullOrWhiteSpace(carNumber)) | |||||
//{ | |||||
// homePageTabletFlyout.IsVisible = true; | |||||
// homePageFlyout.IsVisible = false; | |||||
// _viewModel.IsVisibleCoupons = false; | |||||
// _viewModel.IsVisibleSettings = false; | |||||
// _viewModel.IsCanViewHome = false; | |||||
// _viewModel.IsVisibleJobHistory = true; | |||||
// _viewModel.IsVisibleRydo = true; | |||||
// _viewModel.IsVisibleMyShifts = true; | |||||
// _viewModel.IsVisibleMyAccount = true; | |||||
//} | |||||
//else | |||||
//{ | |||||
// _viewModel.IsVisibleCoupons = true; | |||||
// _viewModel.IsVisibleSettings = true; | |||||
// homePageTabletFlyout.IsVisible = false; | |||||
// homePageFlyout.IsVisible = true; | |||||
// _viewModel.IsVisibleJobHistory = false; | |||||
// _viewModel.IsVisibleMyShifts = false; | |||||
// _viewModel.IsVisibleMyAccount = false; | |||||
//} | |||||
} | |||||
#endregion | |||||
#region Methods | |||||
[Obsolete] | |||||
private async void LogoutClicked(object sender, EventArgs e) | |||||
{ | |||||
DispatchAppComponentService.SetToInitialProperties(); | |||||
var imeiNumber = Preferences.Get("imeiNumber", null); | |||||
var carNumber = Preferences.Get("carNumber", null); | |||||
var isTablet = Preferences.Get("IsTablet", false); | |||||
//if (!isTablet && Device.RuntimePlatform != Device.iOS) | |||||
//{ | |||||
// Preferences.Set("isForeground", "NO"); | |||||
// DependencyService.Resolve<IForegroundService>().StopMyForegroundService(); | |||||
//} | |||||
//else if (Device.RuntimePlatform == Device.iOS) | |||||
//{ | |||||
// var message = new StopServiceMessage(); | |||||
// MessagingCenter.Send(message, "ServiceStopped"); | |||||
//} | |||||
var token = Preferences.Get(SecureStorageData.Token, ""); | |||||
Debug.WriteLine("TOKEN-------------", token); | |||||
var lastLatitude = Convert.ToDouble(Preferences.Get("lastLat", "0")); | |||||
var lastLongitude = Convert.ToDouble(Preferences.Get("lastLng", "0")); | |||||
GMCabsDriverService gmCabsDriverService = new GMCabsDriverService(); | |||||
await gmCabsDriverService.LogoutDriverApp(token, lastLatitude, lastLongitude); | |||||
SecureStorage.RemoveAll(); | |||||
Preferences.Clear(); | |||||
Preferences.Set(SecureStorageData.Token, token); | |||||
if (!string.IsNullOrWhiteSpace(imeiNumber)) | |||||
{ | |||||
Preferences.Set("imeiNumber", imeiNumber); | |||||
} | |||||
if (!string.IsNullOrWhiteSpace(carNumber)) | |||||
{ | |||||
Preferences.Set("carNumber", carNumber); | |||||
} | |||||
Preferences.Set("IsTablet", isTablet); | |||||
SentrySdk.ConfigureScope(scope => | |||||
{ | |||||
scope.User = null; | |||||
}); | |||||
await Current.GoToAsync($"//{nameof(LoginPage)}"); | |||||
} | |||||
private async void Coupons_Clicked(object sender, EventArgs e) | |||||
{ | |||||
//await Current.GoToAsync($"//{nameof(HomePage)}/{nameof(CouponsPage)}"); | |||||
await Current.GoToAsync($"//{nameof(HomePage)}/{nameof(CouponsV2Page)}"); | |||||
} | |||||
private async void Rydo_Clicked(object sender, EventArgs e) | |||||
{ | |||||
//if (!string.IsNullOrEmpty(imeiNumber) && !string.IsNullOrEmpty(carNumber)) | |||||
//{ | |||||
// await Current.GoToAsync($"//{nameof(HomePageTablet)}/{nameof(AcceptedFutureBookingsTabletPage)}"); | |||||
//} | |||||
//else | |||||
//{ | |||||
await Current.GoToAsync($"//{nameof(HomePage)}/{nameof(AcceptedFutureBookingsPage)}"); | |||||
//} | |||||
} | |||||
private async void ScanDrivingLicence_Clicked(object sender, EventArgs e) | |||||
{ | |||||
await Current.GoToAsync($"//{nameof(HomePage)}/{nameof(ScanDrivingLicencePage)}"); | |||||
} | |||||
private async void ScanVoucher_Clicked(object sender, EventArgs e) | |||||
{ | |||||
await Current.GoToAsync($"//{nameof(HomePage)}/{nameof(ScanVoucherPage)}"); | |||||
} | |||||
private async void Settings_Clicked(object sender, EventArgs e) | |||||
{ | |||||
await Current.GoToAsync($"//{nameof(HomePage)}/{nameof(SettingsPage)}"); | |||||
} | |||||
//private async void JobHistory_Clicked(object sender, EventArgs e) | |||||
//{ | |||||
// await Current.GoToAsync($"//{nameof(HomePageTablet)}/{nameof(JobHistoryTabletPage)}"); | |||||
//} | |||||
//private async void MyAccount_Clicked(object sender, EventArgs e) | |||||
//{ | |||||
// if (!string.IsNullOrEmpty(imeiNumber) && !string.IsNullOrEmpty(carNumber)) | |||||
// { | |||||
// await Current.GoToAsync($"//{nameof(HomePageTablet)}/{nameof(MyAccountTabletPage)}"); | |||||
// } | |||||
// else | |||||
// { | |||||
// await Current.GoToAsync($"//{nameof(HomePage)}/{nameof(MyAccountTabletPage)}"); | |||||
// } | |||||
//} | |||||
//private async void MyShifts_Clicked(object sender, EventArgs e) | |||||
//{ | |||||
// if (!string.IsNullOrEmpty(imeiNumber) && !string.IsNullOrEmpty(carNumber)) | |||||
// { | |||||
// await Current.GoToAsync($"//{nameof(HomePageTablet)}/{nameof(MyShiftsTabletPage)}"); | |||||
// } | |||||
// else | |||||
// { | |||||
// await Current.GoToAsync($"//{nameof(HomePage)}/{nameof(MyShiftsTabletPage)}"); | |||||
// } | |||||
//} | |||||
#endregion | |||||
} |
@ -0,0 +1,18 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Text; | |||||
namespace GMCabsDriverAssistant | |||||
{ | |||||
partial class Constants | |||||
{ | |||||
//public const string BASE_URL = "http://devapi.insightpayments.com/api"; | |||||
//public const string BASE_URL_RYDO_API = "http://driverapidev.insightpayments.com"; | |||||
public const string BASE_URL = "http://3.6.215.207:8091/api"; | |||||
public const string BASE_URL_RYDO_API = "http://3.6.215.207:8094"; | |||||
//public const string BASE_URL = "https://api.insightpayments.com/api"; | |||||
//public const string BASE_URL_RYDO_API = "https://drivers.rydo.com.au/"; | |||||
} | |||||
} |
@ -0,0 +1,11 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Text; | |||||
namespace GMCabsDriverAssistant | |||||
{ | |||||
partial class Constants | |||||
{ | |||||
public const string VoucherScanUseFrontCamera = "VoucherScanUseFrontCamera"; | |||||
} | |||||
} |
@ -0,0 +1,6 @@ | |||||
namespace GMCabsDriverAssistantSolution.CustomControls | |||||
{ | |||||
public class NoUnderlineEntry : Entry | |||||
{ | |||||
} | |||||
} |
@ -0,0 +1,26 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Linq; | |||||
using System.Text; | |||||
using System.Threading.Tasks; | |||||
namespace GMCabsDriverAssistantSolution.CustomControls | |||||
{ | |||||
public class OtpEntry : Entry | |||||
{ | |||||
public delegate void BackspaceEventHandler(object sender, EventArgs e); | |||||
public event BackspaceEventHandler OnBackspace; | |||||
public OtpEntry() { } | |||||
public void OnBackspacePressed() | |||||
{ | |||||
if (OnBackspace != null) | |||||
{ | |||||
OnBackspace(null, null); | |||||
} | |||||
} | |||||
} | |||||
} |
@ -0,0 +1,11 @@ | |||||
namespace GMCabsDriverAssistant.Enums | |||||
{ | |||||
public enum BookingNextAction | |||||
{ | |||||
None, | |||||
NoAction, | |||||
ChangeServiceType, | |||||
OfferTip, | |||||
WaitLonger | |||||
} | |||||
} |
@ -0,0 +1,18 @@ | |||||
namespace GMCabsDriverAssistant.Enums | |||||
{ | |||||
public enum BookingStatus | |||||
{ | |||||
None, | |||||
Scheduled, | |||||
Processing, | |||||
NoDriverAvailable, | |||||
UserCancelled, | |||||
AdminCancelled, | |||||
Accepted, | |||||
PassengerCollected, | |||||
DriverCancelled, | |||||
CustomerNoShow, | |||||
Completed, | |||||
SystemCancelled | |||||
} | |||||
} |
@ -0,0 +1,13 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Text; | |||||
namespace GMCabsDriverAssistant.Enums | |||||
{ | |||||
public enum BookingType | |||||
{ | |||||
None, | |||||
Public, | |||||
Corporate | |||||
} | |||||
} |
@ -0,0 +1,12 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Text; | |||||
namespace GMCabsDriverAssistant.Enums | |||||
{ | |||||
public enum FareType | |||||
{ | |||||
Fixed = 1, | |||||
Meter = 2 | |||||
} | |||||
} |
@ -0,0 +1,9 @@ | |||||
namespace GMCabsDriverAssistant.Enums | |||||
{ | |||||
public enum PaymentType | |||||
{ | |||||
None, | |||||
DirectToDriver, | |||||
Account | |||||
} | |||||
} |
@ -0,0 +1,15 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Text; | |||||
namespace GMCabsDriverAssistant.Enums | |||||
{ | |||||
public enum ServiceType | |||||
{ | |||||
None, | |||||
Taxi, | |||||
HireCar, | |||||
FixedPrice, | |||||
MyDriver | |||||
} | |||||
} |
@ -0,0 +1,11 @@ | |||||
namespace GMCabsDriverAssistant.Enums | |||||
{ | |||||
public enum TaxiType | |||||
{ | |||||
None, | |||||
Standard, | |||||
MaxiTaxi, | |||||
StationWagon, | |||||
LondonCabs | |||||
} | |||||
} |
@ -0,0 +1,184 @@ | |||||
<Project Sdk="Microsoft.NET.Sdk"> | |||||
<PropertyGroup> | |||||
<TargetFrameworks>net6.0-android;net6.0-ios;net6.0-maccatalyst</TargetFrameworks> | |||||
<TargetFrameworks Condition="$([MSBuild]::IsOSPlatform('windows'))">$(TargetFrameworks);net6.0-windows10.0.19041.0</TargetFrameworks> | |||||
<!-- Uncomment to also build the tizen app. You will need to install tizen by following this: https://github.com/Samsung/Tizen.NET --> | |||||
<!-- <TargetFrameworks>$(TargetFrameworks);net6.0-tizen</TargetFrameworks> --> | |||||
<OutputType>Exe</OutputType> | |||||
<RootNamespace>GMCabsDriverAssistantSolution</RootNamespace> | |||||
<UseMaui>true</UseMaui> | |||||
<SingleProject>true</SingleProject> | |||||
<ImplicitUsings>enable</ImplicitUsings> | |||||
<!-- Display name --> | |||||
<ApplicationTitle>GMCabsDriverAssistantSolution</ApplicationTitle> | |||||
<!-- App Identifier --> | |||||
<ApplicationId>au.com.gmcabs.driverassistant</ApplicationId> | |||||
<ApplicationIdGuid>6D8C0974-C903-452F-98F8-07E76D498921</ApplicationIdGuid> | |||||
<!-- Versions --> | |||||
<ApplicationDisplayVersion>1.0</ApplicationDisplayVersion> | |||||
<ApplicationVersion>1</ApplicationVersion> | |||||
<SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'ios'">14.2</SupportedOSPlatformVersion> | |||||
<SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'maccatalyst'">14.0</SupportedOSPlatformVersion> | |||||
<SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'android'">21.0</SupportedOSPlatformVersion> | |||||
<SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'windows'">10.0.17763.0</SupportedOSPlatformVersion> | |||||
<TargetPlatformMinVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'windows'">10.0.17763.0</TargetPlatformMinVersion> | |||||
<SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'tizen'">6.5</SupportedOSPlatformVersion> | |||||
</PropertyGroup> | |||||
<ItemGroup> | |||||
<!-- App Icon --> | |||||
<MauiIcon Include="Resources\AppIcon\appicon.svg" ForegroundFile="Resources\AppIcon\appiconfg.svg" Color="#512BD4" /> | |||||
<!-- Splash Screen --> | |||||
<MauiSplashScreen Include="Resources\Splash\splash.svg" Color="#512BD4" BaseSize="128,128" /> | |||||
<!-- Images --> | |||||
<MauiImage Include="Resources\Images\*" /> | |||||
<!-- Custom Fonts --> | |||||
<MauiFont Include="Resources\Fonts\*" /> | |||||
<!-- Raw Assets (also remove the "Resources\Raw" prefix) --> | |||||
<MauiAsset Include="Resources\Raw\**" LogicalName="%(RecursiveDir)%(Filename)%(Extension)" /> | |||||
</ItemGroup> | |||||
<ItemGroup> | |||||
<None Remove="Platforms\Android\google-services.json" /> | |||||
<None Remove="Resources\Images\adminlock.png" /> | |||||
<None Remove="Resources\Images\avail_button.png" /> | |||||
<None Remove="Resources\Images\backSpace.png" /> | |||||
<None Remove="Resources\Images\back_arrow.png" /> | |||||
<None Remove="Resources\Images\barcode.png" /> | |||||
<None Remove="Resources\Images\baseline_home_black_24dp.png" /> | |||||
<None Remove="Resources\Images\busy_button.png" /> | |||||
<None Remove="Resources\Images\card_cash.png" /> | |||||
<None Remove="Resources\Images\clock.png" /> | |||||
<None Remove="Resources\Images\cut_out_stars.png" /> | |||||
<None Remove="Resources\Images\driver.png" /> | |||||
<None Remove="Resources\Images\gmlogo.png" /> | |||||
<None Remove="Resources\Images\gmlogo_tablet.png" /> | |||||
<None Remove="Resources\Images\google_map.png" /> | |||||
<None Remove="Resources\Images\green_pin.png" /> | |||||
<None Remove="Resources\Images\grey_pin.png" /> | |||||
<None Remove="Resources\Images\home.png" /> | |||||
<None Remove="Resources\Images\icon_about.png" /> | |||||
<None Remove="Resources\Images\icon_feed.png" /> | |||||
<None Remove="Resources\Images\ic_menu_blank.png" /> | |||||
<None Remove="Resources\Images\ic_menu_end_shift.png" /> | |||||
<None Remove="Resources\Images\ic_menu_home.png" /> | |||||
<None Remove="Resources\Images\ic_menu_licence_scan.png" /> | |||||
<None Remove="Resources\Images\ic_menu_rydo.png" /> | |||||
<None Remove="Resources\Images\ic_menu_settings.png" /> | |||||
<None Remove="Resources\Images\ic_menu_voucher_scan.png" /> | |||||
<None Remove="Resources\Images\ic_outline_document_scanner_black_24.png" /> | |||||
<None Remove="Resources\Images\ic_stat_ic_notification.png" /> | |||||
<None Remove="Resources\Images\ImportantIconSmall.png" /> | |||||
<None Remove="Resources\Images\key_pad_image.png" /> | |||||
<None Remove="Resources\Images\menu.png" /> | |||||
<None Remove="Resources\Images\message.png" /> | |||||
<None Remove="Resources\Images\next_arrow.png" /> | |||||
<None Remove="Resources\Images\paid.png" /> | |||||
<None Remove="Resources\Images\passenger.png" /> | |||||
<None Remove="Resources\Images\phone_image.png" /> | |||||
<None Remove="Resources\Images\red_pin.png" /> | |||||
<None Remove="Resources\Images\rightdoc.png" /> | |||||
<None Remove="Resources\Images\righttic.png" /> | |||||
<None Remove="Resources\Images\scanned.png" /> | |||||
<None Remove="Resources\Images\setting_alert.png" /> | |||||
<None Remove="Resources\Images\support.png" /> | |||||
<None Remove="Resources\Images\sync.png" /> | |||||
<None Remove="Resources\Images\user.png" /> | |||||
<None Remove="Resources\Images\waze.png" /> | |||||
<None Remove="Resources\Images\wrongdoc.png" /> | |||||
<None Remove="Resources\Images\xamarin_logo.png" /> | |||||
</ItemGroup> | |||||
<ItemGroup> | |||||
<GoogleServicesJson Include="Platforms\Android\google-services.json" /> | |||||
</ItemGroup> | |||||
<ItemGroup> | |||||
<PackageReference Include="CommunityToolkit.Mvvm" Version="8.2.0-preview2" /> | |||||
<PackageReference Include="Plugin.FirebasePushNotification" Version="3.4.35" /> | |||||
<PackageReference Include="Sentry" Version="3.30.0" /> | |||||
<PackageReference Include="sqlite-net-pcl" Version="1.8.116" /> | |||||
</ItemGroup> | |||||
<ItemGroup> | |||||
<MauiXaml Update="Styles\PhoneLayoutStyle.xaml"> | |||||
<Generator>MSBuild:Compile</Generator> | |||||
</MauiXaml> | |||||
<MauiXaml Update="Views\AcceptedFutureBookingsPage.xaml"> | |||||
<Generator>MSBuild:Compile</Generator> | |||||
</MauiXaml> | |||||
<MauiXaml Update="Views\AdminPasswordPage.xaml"> | |||||
<Generator>MSBuild:Compile</Generator> | |||||
</MauiXaml> | |||||
<MauiXaml Update="Views\CouponHistoryPage.xaml"> | |||||
<Generator>MSBuild:Compile</Generator> | |||||
</MauiXaml> | |||||
<MauiXaml Update="Views\CouponsPage.xaml"> | |||||
<Generator>MSBuild:Compile</Generator> | |||||
</MauiXaml> | |||||
<MauiXaml Update="Views\CouponsV2Page.xaml"> | |||||
<Generator>MSBuild:Compile</Generator> | |||||
</MauiXaml> | |||||
<MauiXaml Update="Views\HomePage.xaml"> | |||||
<Generator>MSBuild:Compile</Generator> | |||||
</MauiXaml> | |||||
<MauiXaml Update="Views\ImeiNumberInstallPage.xaml"> | |||||
<Generator>MSBuild:Compile</Generator> | |||||
</MauiXaml> | |||||
<MauiXaml Update="Views\InstallCompletePage.xaml"> | |||||
<Generator>MSBuild:Compile</Generator> | |||||
</MauiXaml> | |||||
<MauiXaml Update="Views\LoginPage.xaml"> | |||||
<Generator>MSBuild:Compile</Generator> | |||||
</MauiXaml> | |||||
<MauiXaml Update="Views\NewPage1.xaml"> | |||||
<Generator>MSBuild:Compile</Generator> | |||||
</MauiXaml> | |||||
<MauiXaml Update="Views\ScanDrivingLicencePage.xaml"> | |||||
<Generator>MSBuild:Compile</Generator> | |||||
</MauiXaml> | |||||
<MauiXaml Update="Views\ScanVoucherPage.xaml"> | |||||
<Generator>MSBuild:Compile</Generator> | |||||
</MauiXaml> | |||||
<MauiXaml Update="Views\SettingsPage.xaml"> | |||||
<Generator>MSBuild:Compile</Generator> | |||||
</MauiXaml> | |||||
<MauiXaml Update="Views\SplashPage.xaml"> | |||||
<Generator>MSBuild:Compile</Generator> | |||||
</MauiXaml> | |||||
<MauiXaml Update="Views\TaxiInstallPage.xaml"> | |||||
<Generator>MSBuild:Compile</Generator> | |||||
</MauiXaml> | |||||
<MauiXaml Update="Views\UserRegistrationGenerateOtpPage.xaml"> | |||||
<Generator>MSBuild:Compile</Generator> | |||||
</MauiXaml> | |||||
<MauiXaml Update="Views\UserRegistrationUpdateDriverPinPage.xaml"> | |||||
<Generator>MSBuild:Compile</Generator> | |||||
</MauiXaml> | |||||
<MauiXaml Update="Views\UserRegistrationVerifyOtpPage.xaml"> | |||||
<Generator>MSBuild:Compile</Generator> | |||||
</MauiXaml> | |||||
<MauiXaml Update="Views\UserSignUpPage.xaml"> | |||||
<Generator>MSBuild:Compile</Generator> | |||||
</MauiXaml> | |||||
</ItemGroup> | |||||
<ItemGroup Condition="'$(TargetFramework)' == 'net6.0-android'"> | |||||
<PackageReference Include="Xamarin.Firebase.Messaging"> | |||||
<Version>123.1.1.1</Version> | |||||
</PackageReference> | |||||
<PackageReference Include="Xamarin.Google.Dagger"> | |||||
<Version>2.44.2.1</Version> | |||||
</PackageReference> | |||||
</ItemGroup> | |||||
</Project> |
@ -0,0 +1,12 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Text; | |||||
using System.Threading.Tasks; | |||||
namespace GMCabsDriverAssistant | |||||
{ | |||||
public interface ILocationConsent | |||||
{ | |||||
Task GetLocationConsent(); | |||||
} | |||||
} |
@ -0,0 +1,41 @@ | |||||
<?xml version="1.0" encoding="utf-8" ?> | |||||
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui" | |||||
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" | |||||
x:Class="GMCabsDriverAssistantSolution.MainPage"> | |||||
<ScrollView> | |||||
<VerticalStackLayout | |||||
Spacing="25" | |||||
Padding="30,0" | |||||
VerticalOptions="Center"> | |||||
<Image | |||||
Source="dotnet_bot.png" | |||||
SemanticProperties.Description="Cute dot net bot waving hi to you!" | |||||
HeightRequest="200" | |||||
HorizontalOptions="Center" /> | |||||
<Label | |||||
Text="Hello, World!" | |||||
SemanticProperties.HeadingLevel="Level1" | |||||
FontSize="32" | |||||
HorizontalOptions="Center" /> | |||||
<Label | |||||
Text="Welcome to .NET Multi-platform App UI" | |||||
SemanticProperties.HeadingLevel="Level2" | |||||
SemanticProperties.Description="Welcome to dot net Multi platform App U I" | |||||
FontSize="18" | |||||
HorizontalOptions="Center" /> | |||||
<Button | |||||
x:Name="CounterBtn" | |||||
Text="Click me" | |||||
SemanticProperties.Hint="Counts the number of times you click" | |||||
Clicked="OnCounterClicked" | |||||
HorizontalOptions="Center" /> | |||||
</VerticalStackLayout> | |||||
</ScrollView> | |||||
</ContentPage> |
@ -0,0 +1,24 @@ | |||||
namespace GMCabsDriverAssistantSolution; | |||||
public partial class MainPage : ContentPage | |||||
{ | |||||
int count = 0; | |||||
public MainPage() | |||||
{ | |||||
InitializeComponent(); | |||||
} | |||||
private void OnCounterClicked(object sender, EventArgs e) | |||||
{ | |||||
count++; | |||||
if (count == 1) | |||||
CounterBtn.Text = $"Clicked {count} time"; | |||||
else | |||||
CounterBtn.Text = $"Clicked {count} times"; | |||||
SemanticScreenReader.Announce(CounterBtn.Text); | |||||
} | |||||
} | |||||
@ -0,0 +1,18 @@ | |||||
namespace GMCabsDriverAssistantSolution; | |||||
public static class MauiProgram | |||||
{ | |||||
public static MauiApp CreateMauiApp() | |||||
{ | |||||
var builder = MauiApp.CreateBuilder(); | |||||
builder | |||||
.UseMauiApp<App>() | |||||
.ConfigureFonts(fonts => | |||||
{ | |||||
fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular"); | |||||
fonts.AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold"); | |||||
}); | |||||
return builder.Build(); | |||||
} | |||||
} |
@ -0,0 +1,10 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Text; | |||||
namespace GMCabsDriverAssistant.Messages | |||||
{ | |||||
public class LocationErrorMessage | |||||
{ | |||||
} | |||||
} |
@ -0,0 +1,12 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Text; | |||||
namespace GMCabsDriverAssistant.Messages | |||||
{ | |||||
public class LocationMessage | |||||
{ | |||||
public double Latitude { get; set; } | |||||
public double Longitude { get; set; } | |||||
} | |||||
} |
@ -0,0 +1,10 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Text; | |||||
namespace GMCabsDriverAssistant.Messages | |||||
{ | |||||
public class StartServiceMessage | |||||
{ | |||||
} | |||||
} |
@ -0,0 +1,10 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Text; | |||||
namespace GMCabsDriverAssistant.Messages | |||||
{ | |||||
public class StopServiceMessage | |||||
{ | |||||
} | |||||
} |
@ -0,0 +1,14 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Text; | |||||
namespace GMCabsDriverAssistant.Models | |||||
{ | |||||
public class AcceptBookingTimerDto | |||||
{ | |||||
public int PendingSeconds { get; set; } | |||||
public string PickUPAddress { get; set; } | |||||
public string DropUpAddress { get; set; } | |||||
public bool IsFutureBooking { get; set; } | |||||
} | |||||
} |
@ -0,0 +1,11 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Text; | |||||
namespace GMCabsDriverAssistant.Models | |||||
{ | |||||
public class AccountBalanceDto | |||||
{ | |||||
public decimal LevyBalance { get; set; } | |||||
} | |||||
} |
@ -0,0 +1,12 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Text; | |||||
namespace GMCabsDriverAssistant.Models | |||||
{ | |||||
public class ApiResponseDto | |||||
{ | |||||
public int StatusCode { get; set; } | |||||
public string Message { get; set; } | |||||
} | |||||
} |
@ -0,0 +1,12 @@ | |||||
using SQLite; | |||||
namespace GMCabsDriverAssistant.Models | |||||
{ | |||||
public class AvailableBooking | |||||
{ | |||||
[PrimaryKey, AutoIncrement] | |||||
public int Id { get; set; } | |||||
public string BookingID { get; set; } | |||||
} | |||||
} |
@ -0,0 +1,19 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Text; | |||||
using System.Text.Json.Serialization; | |||||
namespace GMCabsDriverAssistant.Models | |||||
{ | |||||
public class AvailablePlotRequestDto | |||||
{ | |||||
[JsonPropertyName("DriverID")] | |||||
public Guid DriverID { get; set; } | |||||
[JsonPropertyName("Latitude")] | |||||
public double? Latitude { get; set; } | |||||
[JsonPropertyName("Longitude")] | |||||
public double? Longitude { get; set; } | |||||
} | |||||
} |
@ -0,0 +1,20 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Text; | |||||
using System.Text.Json.Serialization; | |||||
namespace GMCabsDriverAssistant.Models | |||||
{ | |||||
public class AvailablePlotResponseDto | |||||
{ | |||||
[JsonPropertyName("PlotName")] | |||||
public string PlotName { get; set; } | |||||
[JsonPropertyName("PlotPosition")] | |||||
public int PlotPosition { get; set; } | |||||
[JsonPropertyName("PlotExpiryTime")] | |||||
public int PlotExpiryTime { get; set; } | |||||
public ApiResponseDto apiResponseDto { get; set; } | |||||
} | |||||
} |
@ -0,0 +1,254 @@ | |||||
using GMCabsDriverAssistant.Enums; | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Text; | |||||
using System.Text.Json.Serialization; | |||||
namespace GMCabsDriverAssistant.Models | |||||
{ | |||||
public class BookingDto | |||||
{ | |||||
[JsonPropertyName("booking_id")] | |||||
public Guid BookingId { get; set; } | |||||
[JsonPropertyName("discount")] | |||||
public decimal Discount { get; set; } | |||||
[JsonPropertyName("start_address")] | |||||
public string StartAddress { get; set; } | |||||
[JsonPropertyName("start_suburb")] | |||||
public string StartSuburb { get; set; } | |||||
[JsonPropertyName("end_address")] | |||||
public string EndAddress { get; set; } | |||||
[JsonPropertyName("end_suburb")] | |||||
public string EndSuburb { get; set; } | |||||
[JsonPropertyName("future_booking")] | |||||
public bool FutureBooking { get; set; } | |||||
[JsonPropertyName("next_available")] | |||||
public bool NextAvailable { get; set; } | |||||
[JsonPropertyName("notes")] | |||||
public string Notes { get; set; } | |||||
[JsonPropertyName("taxi_type_id")] | |||||
public int? TaxiTypeId { get; set; } | |||||
[JsonPropertyName("fixed_amount")] | |||||
public int? FixedAmount { get; set; } | |||||
[JsonPropertyName("min_fare_amount")] | |||||
public int? MinFareAmount { get; set; } | |||||
[JsonPropertyName("provider_charge_fixed_fare")] | |||||
public int? ProviderChargeFixedFare { get; set; } | |||||
[JsonPropertyName("provider_charge_meter_fare")] | |||||
public int? ProviderChargeMeterFare { get; set; } | |||||
[JsonPropertyName("provider_charge_fixed_fare_preferred")] | |||||
public int? ProviderChargeFixedFarePreferred { get; set; } | |||||
[JsonPropertyName("provider_charge_meter_fare_preferred")] | |||||
public int? ProviderChargeMeterFarePreferred { get; set; } | |||||
[JsonPropertyName("pre_tip")] | |||||
public int? PreTip { get; set; } | |||||
[JsonPropertyName("start_time_local")] | |||||
public int StartTimeLocal { get; set; } | |||||
[JsonPropertyName("start_time_utc")] | |||||
public int StartTimeUtc { get; set; } | |||||
[JsonPropertyName("luggage_count")] | |||||
public int LuggageCount { get; set; } | |||||
[JsonPropertyName("passenger_count")] | |||||
public int PassengerCount { get; set; } | |||||
[JsonPropertyName("service_type_id")] | |||||
public int ServiceTypeId { get; set; } | |||||
[JsonPropertyName("passenger_phone_number")] | |||||
public string PassengerPhoneNumber { get; set; } | |||||
[JsonPropertyName("passenger_name")] | |||||
public string PassengerName { get; set; } | |||||
[JsonPropertyName("voucher_amount")] | |||||
public decimal VoucherAmount { get; set; } | |||||
[JsonPropertyName("latitude")] | |||||
public double Latitude { get; set; } | |||||
[JsonPropertyName("longitude")] | |||||
public double Longitude { get; set; } | |||||
[JsonPropertyName("distance")] | |||||
public float Distance { get; set; } | |||||
public string FormattedDistance | |||||
{ | |||||
get => (Distance >= 1000) ? $"{Distance / 1000:0.##}k" : $"{(int)Distance}m"; | |||||
} | |||||
[JsonPropertyName("estimate_fare")] | |||||
public decimal EstimateFare { get; set; } | |||||
[JsonPropertyName("is_corporate")] | |||||
public bool IsCorporate { get; set; } | |||||
[JsonPropertyName("in_hail")] | |||||
public bool InHail { get; set; } | |||||
[JsonPropertyName("payment_method_id")] | |||||
public Guid? PaymentMethodId { get; set; } | |||||
[JsonPropertyName("payment_method_verified")] | |||||
public bool? PaymentMethodVerified { get; set; } | |||||
[JsonPropertyName("rydo_stars")] | |||||
public int RydoStars { get; set; } | |||||
[JsonPropertyName("priority_driver")] | |||||
public bool PriorityDriver { get; set; } | |||||
[JsonPropertyName("end_latitude")] | |||||
public double EndLatitude { get; set; } | |||||
[JsonPropertyName("end_longitude")] | |||||
public double EndLongitude { get; set; } | |||||
[JsonPropertyName("start_latitude")] | |||||
public double StartLatitude { get; set; } | |||||
[JsonPropertyName("start_longitude")] | |||||
public double StartLongitude { get; set; } | |||||
[JsonPropertyName("payment_type")] | |||||
public PaymentType PaymentType { get; set; } | |||||
[JsonPropertyName("booking_type")] | |||||
public BookingType BookingType { get; set; } | |||||
[JsonPropertyName("pickup_time")] | |||||
public int PickupTime { get; set; } | |||||
[JsonPropertyName("fare_type")] | |||||
public FareType FareType { get; set; } | |||||
[JsonPropertyName("status_id")] | |||||
public int StatusId { get; set; } | |||||
[JsonPropertyName("status_code")] | |||||
public string StatusCode { get; set; } | |||||
[JsonPropertyName("delivered")] | |||||
public bool Delivered { get; set; } | |||||
[JsonPropertyName("ride_id")] | |||||
public Guid? RideId { get; set; } | |||||
[JsonPropertyName("fare_amount")] | |||||
public int? FareAmount { get; set; } | |||||
[JsonPropertyName("end_state")] | |||||
public string EndState { get; set; } | |||||
[JsonPropertyName("service_id")] | |||||
public int ServiceId { get; set; } | |||||
[JsonPropertyName("start_state")] | |||||
public string StartState { get; set; } | |||||
[JsonPropertyName("journey_distance")] | |||||
public int JourneyDistance { get; set; } | |||||
[JsonPropertyName("reward_points")] | |||||
public int RewardPoints { get; set; } | |||||
[JsonPropertyName("booking_fee")] | |||||
public double BookingFee { get; set; } | |||||
[JsonPropertyName("booking_fee_waived")] | |||||
public bool BookingFeeWaived { get; set; } | |||||
[JsonPropertyName("tip")] | |||||
public int? Tip { get; set; } | |||||
[JsonPropertyName("driver_number_plate")] | |||||
public string DriverNumberPlate { get; set; } | |||||
[JsonPropertyName("estimated_arrival_time")] | |||||
public int EstimatedArrivalTime { get; set; } | |||||
[JsonPropertyName("voucher_id")] | |||||
public string VoucherId { get; set; } | |||||
[JsonPropertyName("promotion_id")] | |||||
public string PromotionId { get; set; } | |||||
[JsonPropertyName("stored_cards_available")] | |||||
public bool StoredCardsAvailable { get; set; } | |||||
[JsonPropertyName("current_stop_number")] | |||||
public int? CurrentStopNumber { get; set; } | |||||
[JsonPropertyName("stopover_locations")] | |||||
public IEnumerable<StopoverLocation> StopoverLocations { get; set; } | |||||
public string FormattedPickUpTimeDateOnly | |||||
{ | |||||
get | |||||
{ | |||||
DateTime dateTime = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc); | |||||
dateTime = dateTime.AddSeconds(PickupTime).ToLocalTime(); | |||||
return dateTime.ToString("dd/MM/yyyy"); | |||||
} | |||||
} | |||||
public string FormattedPickUpTimeTimeOnly | |||||
{ | |||||
get | |||||
{ | |||||
DateTime dateTime = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc); | |||||
dateTime = dateTime.AddSeconds(PickupTime).ToLocalTime(); | |||||
return dateTime.ToString("HH:mm ttt"); | |||||
} | |||||
} | |||||
public string FormmattedPickUpDateTime | |||||
{ | |||||
get | |||||
{ | |||||
DateTime dateTime = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc); | |||||
dateTime = dateTime.AddSeconds(PickupTime).ToLocalTime(); | |||||
return dateTime.ToString("dd/MM/yyyy HH:mm:ss"); | |||||
} | |||||
} | |||||
public bool IsSeenBooking { get; set; } | |||||
} | |||||
public class StopoverLocation | |||||
{ | |||||
[JsonPropertyName("latitude")] | |||||
public decimal Latitude { get; set; } | |||||
[JsonPropertyName("longitude")] | |||||
public decimal Longitude { get; set; } | |||||
[JsonPropertyName("address")] | |||||
public string Address { get; set; } | |||||
[JsonPropertyName("stop_number")] | |||||
public decimal StopNumber { get; set; } | |||||
} | |||||
} |
@ -0,0 +1,12 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Text; | |||||
namespace GMCabsDriverAssistant.Models | |||||
{ | |||||
public class CancelledBookingResponseDto | |||||
{ | |||||
public string PickUPAddress { get; set; } | |||||
public string DropUpAddress { get; set; } | |||||
} | |||||
} |
@ -0,0 +1,15 @@ | |||||
using GMCabsDriverAssistant.Models.Rydo; | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Text; | |||||
namespace GMCabsDriverAssistant.Models | |||||
{ | |||||
public class ContactCustomerDto | |||||
{ | |||||
public string PassengerName { get; set; } | |||||
public string PassengerPhoneNumber { get; set; } | |||||
public Guid BookingId { get; set; } | |||||
public MessageRequest messageRequest { get; set; } | |||||
} | |||||
} |
@ -0,0 +1,12 @@ | |||||
namespace GMCabsDriverAssistant.Models | |||||
{ | |||||
public class Coupon | |||||
{ | |||||
public int Id { get; set; } | |||||
public string IssueDate { get; set; } | |||||
public string IssueLocation { get; set; } | |||||
public string ExpiryDate { get; set; } | |||||
public string Amount { get; set; } | |||||
public string QrCodeData { get; set; } | |||||
} | |||||
} |
@ -0,0 +1,18 @@ | |||||
using System; | |||||
using Microsoft.Maui; | |||||
using Microsoft.Maui.Controls; | |||||
namespace GMCabsDriverAssistant.Models | |||||
{ | |||||
public class CouponDto | |||||
{ | |||||
public string Id { get; set; } | |||||
public string QrCodeBase64 { get; set; } | |||||
public ImageSource Image { get; set; } | |||||
public float Amount { get; set; } | |||||
public DateTime IssuedDate { get; set; } | |||||
public DateTime ExpiryDate { get; set; } | |||||
public string Status { get; set; } | |||||
public int IssuedLocationID { get; set; } | |||||
} | |||||
} |
@ -0,0 +1,19 @@ | |||||
using System; | |||||
namespace GMCabsDriverAssistant.Models | |||||
{ | |||||
public class CouponHistoryDto | |||||
{ | |||||
public string Id { get; set; } | |||||
public string QrCodeBase64 { get; set; } | |||||
public float Amount { get; set; } | |||||
public DateTime IssuedDate { get; set; } | |||||
public DateTime? RedeemedDate { get; set; } | |||||
public DateTime ExpiryDate { get; set; } | |||||
public string CouponBackgroundColor { get; set; } | |||||
public string CouponText { get; set; } | |||||
public string IssuedLocation { get; set; } | |||||
public string RedeemedLocation { get; set; } | |||||
public bool isRedemed { get; set; } | |||||
} | |||||
} |
@ -0,0 +1,16 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Text; | |||||
namespace GMCabsDriverAssistant.Models | |||||
{ | |||||
public class CreateLightDriverRequest | |||||
{ | |||||
public string DriverLicence { get; set; } | |||||
public string FirstName { get; set; } | |||||
public string LastName { get; set; } | |||||
public string Password { get; set; } | |||||
public string Email { get; set; } | |||||
public string MobileNumber { get; set; } | |||||
} | |||||
} |
@ -0,0 +1,12 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Text; | |||||
namespace GMCabsDriverAssistant.Models | |||||
{ | |||||
public class DriverAppSelectedPermissionsDto | |||||
{ | |||||
public bool LocationSetToAlways { get; set; } | |||||
public bool BatteryOptimisationDisabled { get; set; } | |||||
} | |||||
} |
@ -0,0 +1,31 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Text; | |||||
using System.Text.Json.Serialization; | |||||
namespace GMCabsDriverAssistant.Models | |||||
{ | |||||
public class DriverRatingResponse | |||||
{ | |||||
[JsonPropertyName("id")] | |||||
public Guid Id { get; set; } | |||||
[JsonPropertyName("referral_code")] | |||||
public string ReferralCode { get; set; } | |||||
[JsonPropertyName("rating")] | |||||
public int Rating { get; set; } | |||||
[JsonPropertyName("first_name")] | |||||
public string FirstName { get; set; } | |||||
[JsonPropertyName("last_name")] | |||||
public string LastName { get; set; } | |||||
[JsonPropertyName("phone_number")] | |||||
public string PhoneNumber { get; set; } | |||||
[JsonPropertyName("driver_authority")] | |||||
public string DriverAuthority { get; set; } | |||||
} | |||||
} |
@ -0,0 +1,12 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Text; | |||||
namespace GMCabsDriverAssistant.Models | |||||
{ | |||||
public class ImeiDto | |||||
{ | |||||
public string ImeiNumber { get; set; } | |||||
public string CarNumber { get; set; } | |||||
} | |||||
} |
@ -0,0 +1,19 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Text; | |||||
using System.Text.Json.Serialization; | |||||
namespace GMCabsDriverAssistant.Models | |||||
{ | |||||
public class LocationUpdateRequestDto | |||||
{ | |||||
[JsonPropertyName("latitude")] | |||||
public double Latitude { get; set; } | |||||
[JsonPropertyName("longitude")] | |||||
public double Longitude { get; set; } | |||||
[JsonPropertyName("imei")] | |||||
public string Imei { get; set; } | |||||
} | |||||
} |
@ -0,0 +1,14 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Text; | |||||
namespace GMCabsDriverAssistant.Models | |||||
{ | |||||
public class LocationVoucherDto | |||||
{ | |||||
public int LoationID { get; set; } | |||||
public string VoucherReemText { get; set; } | |||||
public string VoucherFooterText { get; set; } | |||||
public string VoucherOfferText { get; set; } | |||||
} | |||||
} |
@ -0,0 +1,26 @@ | |||||
using System.Text.Json.Serialization; | |||||
namespace GMCabsDriverAssistant.Models | |||||
{ | |||||
public class LoginRequestDto | |||||
{ | |||||
[JsonPropertyName("mobileNumber")] | |||||
public string MobileNumber { get; set; } | |||||
[JsonPropertyName("pin")] | |||||
public string Pin { get; set; } | |||||
[JsonPropertyName("latitude")] | |||||
public double? Latitude { get; set; } | |||||
[JsonPropertyName("longitude")] | |||||
public double? Longitude { get; set; } | |||||
[JsonPropertyName("fcmToken")] | |||||
public string FCMToken { get; set; } | |||||
[JsonPropertyName("imei")] | |||||
public string Imei { get; set; } | |||||
public bool IsTabletSession { get; set; } | |||||
} | |||||
} |
@ -0,0 +1,38 @@ | |||||
using System; | |||||
using System.Net; | |||||
using System.Text.Json.Serialization; | |||||
namespace GMCabsDriverAssistant.Models | |||||
{ | |||||
public class LoginResponseDto | |||||
{ | |||||
#region Properties | |||||
public Guid Token { get; set; } | |||||
public string DriverName { get; set; } | |||||
public string DriverMobileNumber { get; set; } | |||||
public Guid UserCode { get; set; } | |||||
public bool CanAcceptBookings { get; set; } | |||||
public bool CanUpdateLicence { get; set; } | |||||
public bool CanScanVouchers { get; set; } | |||||
public string InstalledTaxiNumber { get; set; } = null; | |||||
public bool CanViewCoupons { get; set; } | |||||
public bool CanViewSettings { get; set; } | |||||
public bool CanViewHome { get; set; } | |||||
public bool CanViewJobHistory { get; set; } | |||||
public bool IsTabletSession { get; set; } | |||||
public string LoginResponseMessage { get; set; } | |||||
public int UserId { get; set; } | |||||
#endregion | |||||
#region Constants | |||||
public const string DRIVER_NAME = nameof(DriverName); | |||||
public const string DRIVER_MOBILE_NUMBER = nameof(DriverMobileNumber); | |||||
public const string USER_CODE = nameof(UserCode); | |||||
#endregion | |||||
} | |||||
} |
@ -0,0 +1,13 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Text; | |||||
namespace GMCabsDriverAssistant.Models | |||||
{ | |||||
public class MeterTrip | |||||
{ | |||||
public string StartSuburb { get; set; } | |||||
public string PickUpDateTime { get; set; } | |||||
public int TimerSeconds { get; set; } | |||||
} | |||||
} |
@ -0,0 +1,17 @@ | |||||
using System; | |||||
namespace GMCabsDriverAssistant.Models | |||||
{ | |||||
public class NotificationDto | |||||
{ | |||||
public string Id { get; set; } | |||||
public int UserID { get; set; } | |||||
public string Subject { get; set; } | |||||
public string Body { get; set; } | |||||
public string FromName { get; set; } | |||||
public DateTime SentDate { get; set; } | |||||
public DateTime? ReceivedDate { get; set; } | |||||
public DateTime? DateViewed { get; set; } | |||||
public bool Important { get; set; } | |||||
} | |||||
} |
@ -0,0 +1,50 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Text; | |||||
using System.Text.Json.Serialization; | |||||
namespace GMCabsDriverAssistant.Models | |||||
{ | |||||
public class PlotResponseDto | |||||
{ | |||||
[JsonPropertyName("ID")] | |||||
public Guid ID { get; set; } | |||||
[JsonPropertyName("ZoneID")] | |||||
public Guid ZoneID { get; set; } | |||||
[JsonPropertyName("Name")] | |||||
public string Name { get; set; } | |||||
[JsonPropertyName("Latitude")] | |||||
public double? Latitude { get; set; } | |||||
[JsonPropertyName("Longitude")] | |||||
public double? Longitude { get; set; } | |||||
[JsonPropertyName("Radius")] | |||||
public decimal? Radius { get; set; } | |||||
[JsonPropertyName("Available")] | |||||
public bool Available { get; set; } | |||||
[JsonPropertyName("Distance")] | |||||
public int Distance { get; set; } | |||||
[JsonPropertyName("PlotExpiryTime")] | |||||
public int PlotExpiryTime { get; set; } | |||||
[JsonPropertyName("DriverDistance")] | |||||
public int? DriverDistance { get; set; } | |||||
[JsonPropertyName("Position")] | |||||
public int Position { get; set; } | |||||
public string OtherAvailablePlotAreas | |||||
{ | |||||
get | |||||
{ | |||||
return (Distance>=1000)? Name + "(" + Distance/1000 + "k)" : Name + "(" + Distance + "m)"; | |||||
} | |||||
} | |||||
} | |||||
} |
@ -0,0 +1,21 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Text; | |||||
using Microsoft.Maui; | |||||
using Microsoft.Maui.Controls; | |||||
namespace GMCabsDriverAssistant.Models | |||||
{ | |||||
public class RecentScannedCouponDto | |||||
{ | |||||
public string Status { get; set; } | |||||
public DateTime ScannedTime { get; set; } | |||||
public string CouponBackgroundColor { get; set; } | |||||
public string CouponTextColor { get; set; } | |||||
public ImageSource Image { get; set; } | |||||
} | |||||
} |
@ -0,0 +1,12 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Text; | |||||
namespace GMCabsDriverAssistant.Models | |||||
{ | |||||
public class ReleaseBookingDto | |||||
{ | |||||
public Guid BookingId { get; set; } | |||||
public string ReleaseReason { get; set; } | |||||
} | |||||
} |
@ -0,0 +1,20 @@ | |||||
using System.Text.Json.Serialization; | |||||
namespace GMCabsDriverAssistant.Services | |||||
{ | |||||
public class ResetDriverPinResponse | |||||
{ | |||||
[JsonPropertyName("type")] | |||||
public string Type { get; set; } | |||||
[JsonPropertyName("title")] | |||||
public string Title { get; set; } | |||||
[JsonPropertyName("status")] | |||||
public int Status { get; set; } | |||||
[JsonPropertyName("traceId")] | |||||
public string TraceId { get; set; } | |||||
} | |||||
} |
@ -0,0 +1,28 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Linq; | |||||
using System.Text; | |||||
using System.Text.Json.Serialization; | |||||
using System.Threading.Tasks; | |||||
namespace GMCabsDriverAssistantSolution.Models.Rydo | |||||
{ | |||||
public class AcceptDeclineBookingRequest | |||||
{ | |||||
#region Properties | |||||
[JsonPropertyName("driver_id")] | |||||
public Guid DriverId { get; set; } | |||||
[JsonPropertyName("driver_latitude")] | |||||
public double DriverLatitude { get; set; } | |||||
[JsonPropertyName("driver_longitude")] | |||||
public double DriverLongitude { get; set; } | |||||
[JsonPropertyName("driver_source")] | |||||
public int DriverSource { get; set; } | |||||
#endregion | |||||
} | |||||
} |
@ -0,0 +1,37 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Linq; | |||||
using System.Text; | |||||
using System.Text.Json.Serialization; | |||||
using System.Threading.Tasks; | |||||
namespace GMCabsDriverAssistantSolution.Models.Rydo | |||||
{ | |||||
public class AcceptDeclineBookingResponse | |||||
{ | |||||
public int StatusCode { get; set; } | |||||
public string Message { get; set; } | |||||
[JsonPropertyName("future_booking")] | |||||
public bool FutureBooking { get; set; } | |||||
[JsonPropertyName("payment_method_id")] | |||||
public Guid? PaymentMethodId { get; set; } | |||||
[JsonPropertyName("passenger_name")] | |||||
public string PassengerName { get; set; } | |||||
[JsonPropertyName("pickup_time")] | |||||
public long? PickupTime { get; set; } | |||||
[JsonPropertyName("is_corporate")] | |||||
public bool IsCorporate { get; set; } | |||||
public string PickUpAddress { get; set; } | |||||
[JsonPropertyName("booking_id")] | |||||
public Guid BookingId { get; set; } | |||||
[JsonPropertyName("passenger_phone_number")] | |||||
public string PassengerPhoneNumber { get; set; } | |||||
} | |||||
} |
@ -0,0 +1,20 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Linq; | |||||
using System.Text; | |||||
using System.Text.Json.Serialization; | |||||
using System.Threading.Tasks; | |||||
namespace GMCabsDriverAssistantSolution.Models.Rydo | |||||
{ | |||||
public class EftposLoginRequest | |||||
{ | |||||
#region Properties | |||||
[JsonPropertyName("driver_id")] | |||||
public Guid DriverId { get; set; } | |||||
[JsonPropertyName("mobile_number")] | |||||
public string MobileNumber { get; set; } | |||||
#endregion | |||||
} | |||||
} |
@ -0,0 +1,28 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Linq; | |||||
using System.Text; | |||||
using System.Text.Json.Serialization; | |||||
using System.Threading.Tasks; | |||||
namespace GMCabsDriverAssistantSolution.Models.Rydo | |||||
{ | |||||
public class EftposLoginResponse | |||||
{ | |||||
#region Constants | |||||
public const string RYDO_ACCESS_TOKEN = "RydoAccessToken"; | |||||
public const string RYDO_TOKEN_TYPE = "RydoTokenType"; | |||||
#endregion | |||||
#region Properties | |||||
[JsonPropertyName("access_token")] | |||||
public string AccessToken { get; set; } | |||||
[JsonPropertyName("token_type")] | |||||
public string TokenType { get; set; } | |||||
[JsonPropertyName("expires_in")] | |||||
public int ExpiresIn { get; set; } | |||||
#endregion | |||||
} | |||||
} |
@ -0,0 +1,31 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Text; | |||||
using System.Text.Json.Serialization; | |||||
namespace GMCabsDriverAssistant.Models.Rydo | |||||
{ | |||||
public class EndRideRequestDto | |||||
{ | |||||
[JsonPropertyName("driver_id")] | |||||
public Guid DriverId { get; set; } | |||||
[JsonPropertyName("direct_to_driver")] | |||||
public bool DirectToDriver { get; set; } | |||||
[JsonPropertyName("fare")] | |||||
public int Fare { get; set; } | |||||
[JsonPropertyName("extra")] | |||||
public int Extra { get; set; } | |||||
[JsonPropertyName("latitude")] | |||||
public double Latitude { get; set; } | |||||
[JsonPropertyName("longitude")] | |||||
public double Longitude { get; set; } | |||||
[JsonPropertyName("source_device_id")] | |||||
public int SourceDeviceId { get; set; } | |||||
} | |||||
} |
@ -0,0 +1,13 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Text; | |||||
using System.Text.Json.Serialization; | |||||
namespace GMCabsDriverAssistant.Models.Rydo | |||||
{ | |||||
public class MessageRequest | |||||
{ | |||||
[JsonPropertyName("Message")] | |||||
public string Message { get; set; } | |||||
} | |||||
} |
@ -0,0 +1,17 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Text; | |||||
using System.Text.Json.Serialization; | |||||
namespace GMCabsDriverAssistant.Models.Rydo | |||||
{ | |||||
public class StartRideRequest | |||||
{ | |||||
[JsonPropertyName("driver_id")] | |||||
public string DriverId { get; set; } | |||||
[JsonPropertyName("force_start")] | |||||
public bool ForceStart { get; set; } | |||||
[JsonPropertyName("driver_source")] | |||||
public int? DriverSouce { get; set; } | |||||
} | |||||
} |
@ -0,0 +1,12 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Text; | |||||
namespace GMCabsDriverAssistant.Models.Rydo | |||||
{ | |||||
public class StartRideRequestDto | |||||
{ | |||||
public StartRideRequest startRideRequest { get; set; } | |||||
public Guid BookingId { get; set;} | |||||
} | |||||
} |
@ -0,0 +1,16 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Text; | |||||
using System.Text.Json.Serialization; | |||||
namespace GMCabsDriverAssistant.Models.Rydo | |||||
{ | |||||
public class StartTripRequest | |||||
{ | |||||
[JsonPropertyName("driver_id")] | |||||
public string DriverId { get; set; } | |||||
[JsonPropertyName("driver_source")] | |||||
public int? DriverSouce { get; set; } | |||||
} | |||||
} |
@ -0,0 +1,34 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Text; | |||||
using System.Text.Json.Serialization; | |||||
namespace GMCabsDriverAssistant.Models | |||||
{ | |||||
public class ShiftResponseDto | |||||
{ | |||||
[JsonPropertyName("userID")] | |||||
public int UserID { get; set; } | |||||
[JsonPropertyName("startDate")] | |||||
public DateTime? StartDate { get; set; } | |||||
[JsonPropertyName("endDate")] | |||||
public DateTime? EndDate { get; set; } | |||||
[JsonPropertyName("networkVehicleID")] | |||||
public int NetworkVehicleID { get; set; } | |||||
[JsonPropertyName("carNumber")] | |||||
public string CarNumber { get; set; } | |||||
[JsonPropertyName("imei")] | |||||
public string Imei { get; set; } | |||||
[JsonPropertyName("startSuburb")] | |||||
public string StartSuburb { get; set; } | |||||
[JsonPropertyName("endSuburb")] | |||||
public string EndSuburb { get; set; } | |||||
} | |||||
} |
@ -0,0 +1,11 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Text; | |||||
namespace GMCabsDriverAssistant.Models | |||||
{ | |||||
public class SilentModeSettingRequest | |||||
{ | |||||
public bool IsSilentModeEnabled { get; set; } | |||||
} | |||||
} |
@ -0,0 +1,39 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Text; | |||||
using System.Text.Json.Serialization; | |||||
namespace GMCabsDriverAssistant.Models | |||||
{ | |||||
public class StartRideResponse | |||||
{ | |||||
public int StatusCode { get; set; } | |||||
public string Message { get; set; } | |||||
[JsonPropertyName("passenger_name")] | |||||
public string PassengerName { get; set; } | |||||
[JsonPropertyName("is_corporate")] | |||||
public bool IsCorporate { get; set; } | |||||
[JsonPropertyName("end_address")] | |||||
public string EndAddress { get; set; } | |||||
[JsonPropertyName("end_suburb")] | |||||
public string EndSuburb { get; set; } | |||||
[JsonPropertyName("stopover_locations")] | |||||
public List<StopoverLocations> StopoverLocations { get; set; } | |||||
[JsonPropertyName("end_latitude")] | |||||
public double EndLatitude { get; set; } | |||||
[JsonPropertyName("end_longitude")] | |||||
public double EndLongitude { get; set; } | |||||
public string FullDestinationAddress { get; set; } | |||||
[JsonPropertyName("payment_method_id")] | |||||
public Guid? PaymentMethodId { get; set; } | |||||
[JsonPropertyName("fixed_amount")] | |||||
public decimal? FixedAmount { get; set; } | |||||
public int FrameWidth { get; set; } | |||||
public string DriverId { get; set; } | |||||
public Guid BookingId { get; set; } | |||||
} | |||||
} |
@ -0,0 +1,210 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Text; | |||||
using System.Text.Json.Serialization; | |||||
namespace GMCabsDriverAssistant.Models | |||||
{ | |||||
public class StartTripResponse | |||||
{ | |||||
[JsonPropertyName("booking_id")] | |||||
public Guid BookingId { get; set; } | |||||
[JsonPropertyName("discount")] | |||||
public decimal Discount { get; set; } | |||||
[JsonPropertyName("start_address")] | |||||
public string StartAddress { get; set; } | |||||
[JsonPropertyName("start_suburb")] | |||||
public string StartSuburb { get; set; } | |||||
[JsonPropertyName("end_address")] | |||||
public string EndAddress { get; set; } | |||||
[JsonPropertyName("end_suburb")] | |||||
public string EndSuburb { get; set; } | |||||
[JsonPropertyName("future_booking")] | |||||
public bool FutureBooking { get; set; } | |||||
[JsonPropertyName("next_available")] | |||||
public bool NextAvailable { get; set; } | |||||
[JsonPropertyName("notes")] | |||||
public string Notes { get; set; } | |||||
[JsonPropertyName("taxi_type_id")] | |||||
public int? TaxiTypeId { get; set; } | |||||
[JsonPropertyName("fixed_amount")] | |||||
public int? FixedAmount { get; set; } | |||||
[JsonPropertyName("min_fare_amount")] | |||||
public int MinFareAmount { get; set; } | |||||
[JsonPropertyName("provider_charge_fixed_fare")] | |||||
public int ProviderChargeFixedFare { get; set; } | |||||
[JsonPropertyName("provider_charge_meter_fare")] | |||||
public int ProviderChargeMeterFare { get; set; } | |||||
[JsonPropertyName("provider_charge_fixed_fare_preferred")] | |||||
public int ProviderChargeFixedFarePreferred { get; set; } | |||||
[JsonPropertyName("provider_charge_meter_fare_preferred")] | |||||
public int ProviderChargeMeterFarePreferred { get; set; } | |||||
[JsonPropertyName("pre_tip")] | |||||
public int PreTip { get; set; } | |||||
[JsonPropertyName("start_time_local")] | |||||
public long StartTimeLocal { get; set; } | |||||
[JsonPropertyName("start_time_utc")] | |||||
public long StartTimeUtc { get; set; } | |||||
[JsonPropertyName("luggage_count")] | |||||
public int LuggageCount { get; set; } | |||||
[JsonPropertyName("passenger_count")] | |||||
public int PassengerCount { get; set; } | |||||
[JsonPropertyName("service_type_id")] | |||||
public int ServiceTypeId { get; set; } | |||||
[JsonPropertyName("passenger_phone_number")] | |||||
public string PassengerPhoneNumber { get; set; } | |||||
[JsonPropertyName("passenger_name")] | |||||
public string PassengerName { get; set; } | |||||
[JsonPropertyName("voucher_amount")] | |||||
public int VoucherAmount { get; set; } | |||||
[JsonPropertyName("latitude")] | |||||
public double Latitude { get; set; } | |||||
[JsonPropertyName("longitude")] | |||||
public double Longitude { get; set; } | |||||
[JsonPropertyName("distance")] | |||||
public double Distance { get; set; } | |||||
[JsonPropertyName("estimate_fare")] | |||||
public int EstimateFare { get; set; } | |||||
[JsonPropertyName("is_corporate")] | |||||
public bool IsCorporate { get; set; } | |||||
[JsonPropertyName("in_hail")] | |||||
public bool InHail { get; set; } | |||||
[JsonPropertyName("payment_method_id")] | |||||
public Guid? PaymentMethodId { get; set; } | |||||
[JsonPropertyName("payment_method_verified")] | |||||
public bool? PaymentMethodVerified { get; set; } | |||||
[JsonPropertyName("rydo_stars")] | |||||
public int RydoStars { get; set; } | |||||
[JsonPropertyName("priority_driver")] | |||||
public bool PriorityDriver { get; set; } | |||||
[JsonPropertyName("end_latitude")] | |||||
public double EndLatitude { get; set; } | |||||
[JsonPropertyName("end_longitude")] | |||||
public double EndLongitude { get; set; } | |||||
[JsonPropertyName("start_latitude")] | |||||
public double StartLatitude { get; set; } | |||||
[JsonPropertyName("start_longitude")] | |||||
public double StartLongitude { get; set; } | |||||
[JsonPropertyName("payment_type")] | |||||
public int PaymentType { get; set; } | |||||
[JsonPropertyName("booking_type")] | |||||
public int BookingType { get; set; } | |||||
[JsonPropertyName("pickup_time")] | |||||
public long PickupTime { get; set; } | |||||
[JsonPropertyName("fare_type")] | |||||
public int FareType { get; set; } | |||||
[JsonPropertyName("status_id")] | |||||
public int StatusId { get; set; } | |||||
[JsonPropertyName("status_code")] | |||||
public string StatusCode { get; set; } | |||||
[JsonPropertyName("delivered")] | |||||
public bool Delivered { get; set; } | |||||
[JsonPropertyName("ride_id")] | |||||
public Guid? RideId { get; set; } | |||||
[JsonPropertyName("fare_amount")] | |||||
public int? FareAmount { get; set; } | |||||
[JsonPropertyName("end_state")] | |||||
public string EndState { get; set; } | |||||
[JsonPropertyName("service_id")] | |||||
public int ServiceId { get; set; } | |||||
[JsonPropertyName("start_state")] | |||||
public string StartState { get; set; } | |||||
[JsonPropertyName("journey_distance")] | |||||
public int JourneyDistance { get; set; } | |||||
[JsonPropertyName("reward_points")] | |||||
public int RewardPoints { get; set; } | |||||
[JsonPropertyName("booking_fee")] | |||||
public int BookingFee { get; set; } | |||||
[JsonPropertyName("booking_fee_waived")] | |||||
public bool BookingFeeWaived { get; set; } | |||||
[JsonPropertyName("tip")] | |||||
public int? Tip { get; set; } | |||||
[JsonPropertyName("driver_number_plate")] | |||||
public string DriverNumberPlate { get; set; } | |||||
[JsonPropertyName("estimated_arrival_time")] | |||||
public int EstimatedArrivalTime { get; set; } | |||||
[JsonPropertyName("voucher_id")] | |||||
public string VoucherId { get; set; } | |||||
[JsonPropertyName("promotion_id")] | |||||
public string PromotionId { get; set; } | |||||
[JsonPropertyName("stored_cards_available")] | |||||
public bool StoredCardsAvailable { get; set; } | |||||
[JsonPropertyName("current_stop_number")] | |||||
public int? CurrentStopNumber { get; set; } | |||||
[JsonPropertyName("stopover_locations")] | |||||
public List<StopoverLocations> StopoverLocations { get; set; } | |||||
[JsonPropertyName("pre_accepted")] | |||||
public bool PreAccepted { get; set; } | |||||
[JsonPropertyName("tid")] | |||||
public string Tid { get; set; } | |||||
[JsonPropertyName("platform_identity")] | |||||
public string PlatformIdentity { get; set; } | |||||
public int ResponseStatusCode { get; set; } | |||||
public string Message { get; set; } | |||||
} | |||||
} |
@ -0,0 +1,27 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Text; | |||||
using System.Text.Json.Serialization; | |||||
namespace GMCabsDriverAssistant.Models | |||||
{ | |||||
public class StopoverLocations | |||||
{ | |||||
[JsonPropertyName("latitude")] | |||||
public double Latitude { get; set; } | |||||
[JsonPropertyName("longitude")] | |||||
public double Longitude { get; set; } | |||||
[JsonPropertyName("address")] | |||||
public string Address { get; set; } | |||||
[JsonPropertyName("suburb")] | |||||
public string Suburb { get; set; } | |||||
[JsonPropertyName("stop_number")] | |||||
public int StopNumber { get; set; } | |||||
public string FullStopOverAddress => Address + " " + Suburb; | |||||
public string LabelColor { get; set; } = "#BBB9B9"; | |||||
public double CircleColorOpecity { get; set; } | |||||
public bool IsLineVisible { get; set; } = true; | |||||
} | |||||
} |
@ -0,0 +1,13 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Text; | |||||
namespace GMCabsDriverAssistant.Models | |||||
{ | |||||
public class TripsBookingResponse | |||||
{ | |||||
public DateTime BookingDate { get; set; } | |||||
public string PickupAddress { get; set; } | |||||
public string DropoffAddress { get; set; } | |||||
} | |||||
} |
@ -0,0 +1,12 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Text; | |||||
namespace GMCabsDriverAssistant.Models | |||||
{ | |||||
public class UnreadCountResponseDto | |||||
{ | |||||
public int StatusCode { get; set; } | |||||
public int UnreadNotificationCount { get; set; } | |||||
} | |||||
} |
@ -0,0 +1,18 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Text; | |||||
namespace GMCabsDriverAssistant.Models | |||||
{ | |||||
public class ValidateTokenResponseDto | |||||
{ | |||||
public bool Result { get; set; } | |||||
public bool CanAcceptBookings { get; set; } | |||||
public bool CanUpdateLicence { get; set; } | |||||
public bool CanScanVouchers { get; set; } | |||||
public bool CanViewCoupons { get; set; } | |||||
public bool CanViewSettings { get; set; } | |||||
public bool CanViewHome { get; set; } | |||||
public bool CanViewJobHistory { get; set; } | |||||
} | |||||
} |
@ -0,0 +1,9 @@ | |||||
<?xml version="1.0" encoding="utf-8"?> | |||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"> | |||||
<application android:allowBackup="true" android:icon="@mipmap/appicon" android:roundIcon="@mipmap/appicon_round" android:supportsRtl="true" package="au.com.gmcabs.driverassistant" android:usesCleartextTraffic="true"></application> | |||||
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> | |||||
<uses-permission android:name="android.permission.INTERNET" /> | |||||
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" /> | |||||
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> | |||||
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> | |||||
</manifest> |
@ -0,0 +1,19 @@ | |||||
using Firebase.Messaging; | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Linq; | |||||
using System.Text; | |||||
using System.Threading.Tasks; | |||||
namespace GMCabsDriverAssistantSolution.Platforms.Android | |||||
{ | |||||
public class FirebaseServices : FirebaseMessagingService | |||||
{ | |||||
public FirebaseServices() { } | |||||
public override void OnNewToken(string token) | |||||
{ | |||||
base.OnNewToken(token); | |||||
} | |||||
} | |||||
} |
@ -0,0 +1,10 @@ | |||||
using Android.App; | |||||
using Android.Content.PM; | |||||
using Android.OS; | |||||
namespace GMCabsDriverAssistantSolution; | |||||
[Activity(Theme = "@style/Maui.SplashTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation | ConfigChanges.UiMode | ConfigChanges.ScreenLayout | ConfigChanges.SmallestScreenSize | ConfigChanges.Density)] | |||||
public class MainActivity : MauiAppCompatActivity | |||||
{ | |||||
} |
@ -0,0 +1,15 @@ | |||||
using Android.App; | |||||
using Android.Runtime; | |||||
namespace GMCabsDriverAssistantSolution; | |||||
[Application] | |||||
public class MainApplication : MauiApplication | |||||
{ | |||||
public MainApplication(IntPtr handle, JniHandleOwnership ownership) | |||||
: base(handle, ownership) | |||||
{ | |||||
} | |||||
protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp(); | |||||
} |
@ -0,0 +1,6 @@ | |||||
<?xml version="1.0" encoding="utf-8"?> | |||||
<resources> | |||||
<color name="colorPrimary">#512BD4</color> | |||||
<color name="colorPrimaryDark">#2B0B98</color> | |||||
<color name="colorAccent">#2B0B98</color> | |||||
</resources> |
@ -0,0 +1,39 @@ | |||||
{ | |||||
"project_info": { | |||||
"project_number": "1043650258738", | |||||
"project_id": "gm-driver-assistant", | |||||
"storage_bucket": "gm-driver-assistant.appspot.com" | |||||
}, | |||||
"client": [ | |||||
{ | |||||
"client_info": { | |||||
"mobilesdk_app_id": "1:1043650258738:android:09e96234595e06190e192b", | |||||
"android_client_info": { | |||||
"package_name": "au.com.gmcabs.driverassistant" | |||||
} | |||||
}, | |||||
"oauth_client": [ | |||||
{ | |||||
"client_id": "1043650258738-f7temh37gnu293l6oe1r6r7dqa4k71ms.apps.googleusercontent.com", | |||||
"client_type": 3 | |||||
} | |||||
], | |||||
"api_key": [ | |||||
{ | |||||
"current_key": "AIzaSyBZDupHesCvSye9Yi5zDiyUUSFm3ZcmBj8" | |||||
} | |||||
], | |||||
"services": { | |||||
"appinvite_service": { | |||||
"other_platform_oauth_client": [ | |||||
{ | |||||
"client_id": "1043650258738-f7temh37gnu293l6oe1r6r7dqa4k71ms.apps.googleusercontent.com", | |||||
"client_type": 3 | |||||
} | |||||
] | |||||
} | |||||
} | |||||
} | |||||
], | |||||
"configuration_version": "1" | |||||
} |
@ -0,0 +1,10 @@ | |||||
<?xml version="1.0" encoding="utf-8" ?> | |||||
<network-security-config> | |||||
<domain-config cleartextTrafficPermitted="true" > | |||||
<domain includeSubdomains="true">10.0.2.2</domain><!-- Debug port --> | |||||
<domain includeSubdomains="true">insightpayments.com</domain> | |||||
<domain includeSubdomains="true">devapi.insightpayments.com</domain> | |||||
<domain includeSubdomains="true">xamarin.com</domain> | |||||
<domain includeSubdomains="true">3.6.215.207</domain> | |||||
</domain-config> | |||||
</network-security-config> |
@ -0,0 +1,9 @@ | |||||
using Foundation; | |||||
namespace GMCabsDriverAssistantSolution; | |||||
[Register("AppDelegate")] | |||||
public class AppDelegate : MauiUIApplicationDelegate | |||||
{ | |||||
protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp(); | |||||
} |
@ -0,0 +1,30 @@ | |||||
<?xml version="1.0" encoding="UTF-8"?> | |||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | |||||
<plist version="1.0"> | |||||
<dict> | |||||
<key>UIDeviceFamily</key> | |||||
<array> | |||||
<integer>1</integer> | |||||
<integer>2</integer> | |||||
</array> | |||||
<key>UIRequiredDeviceCapabilities</key> | |||||
<array> | |||||
<string>arm64</string> | |||||
</array> | |||||
<key>UISupportedInterfaceOrientations</key> | |||||
<array> | |||||
<string>UIInterfaceOrientationPortrait</string> | |||||
<string>UIInterfaceOrientationLandscapeLeft</string> | |||||
<string>UIInterfaceOrientationLandscapeRight</string> | |||||
</array> | |||||
<key>UISupportedInterfaceOrientations~ipad</key> | |||||
<array> | |||||
<string>UIInterfaceOrientationPortrait</string> | |||||
<string>UIInterfaceOrientationPortraitUpsideDown</string> | |||||
<string>UIInterfaceOrientationLandscapeLeft</string> | |||||
<string>UIInterfaceOrientationLandscapeRight</string> | |||||
</array> | |||||
<key>XSAppIconAssets</key> | |||||
<string>Assets.xcassets/appicon.appiconset</string> | |||||
</dict> | |||||
</plist> |
@ -0,0 +1,15 @@ | |||||
using ObjCRuntime; | |||||
using UIKit; | |||||
namespace GMCabsDriverAssistantSolution; | |||||
public class Program | |||||
{ | |||||
// This is the main entry point of the application. | |||||
static void Main(string[] args) | |||||
{ | |||||
// if you want to use a different Application Delegate class from "AppDelegate" | |||||
// you can specify it here. | |||||
UIApplication.Main(args, null, typeof(AppDelegate)); | |||||
} | |||||
} |
@ -0,0 +1,16 @@ | |||||
using System; | |||||
using Microsoft.Maui; | |||||
using Microsoft.Maui.Hosting; | |||||
namespace GMCabsDriverAssistantSolution; | |||||
class Program : MauiApplication | |||||
{ | |||||
protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp(); | |||||
static void Main(string[] args) | |||||
{ | |||||
var app = new Program(); | |||||
app.Run(args); | |||||
} | |||||
} |
@ -0,0 +1,15 @@ | |||||
<?xml version="1.0" encoding="utf-8"?> | |||||
<manifest package="maui-application-id-placeholder" version="0.0.0" api-version="7" xmlns="http://tizen.org/ns/packages"> | |||||
<profile name="common" /> | |||||
<ui-application appid="maui-application-id-placeholder" exec="GMCabsDriverAssistantSolution.dll" multiple="false" nodisplay="false" taskmanage="true" type="dotnet" launch_mode="single"> | |||||
<label>maui-application-title-placeholder</label> | |||||
<icon>maui-appicon-placeholder</icon> | |||||
<metadata key="http://tizen.org/metadata/prefer_dotnet_aot" value="true" /> | |||||
</ui-application> | |||||
<shortcut-list /> | |||||
<privileges> | |||||
<privilege>http://tizen.org/privilege/internet</privilege> | |||||
</privileges> | |||||
<dependencies /> | |||||
<provides-appdefined-privileges /> | |||||
</manifest> |
@ -0,0 +1,8 @@ | |||||
<maui:MauiWinUIApplication | |||||
x:Class="GMCabsDriverAssistantSolution.WinUI.App" | |||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" | |||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" | |||||
xmlns:maui="using:Microsoft.Maui" | |||||
xmlns:local="using:GMCabsDriverAssistantSolution.WinUI"> | |||||
</maui:MauiWinUIApplication> |
@ -0,0 +1,24 @@ | |||||
using Microsoft.UI.Xaml; | |||||
// To learn more about WinUI, the WinUI project structure, | |||||
// and more about our project templates, see: http://aka.ms/winui-project-info. | |||||
namespace GMCabsDriverAssistantSolution.WinUI; | |||||
/// <summary> | |||||
/// Provides application-specific behavior to supplement the default Application class. | |||||
/// </summary> | |||||
public partial class App : MauiWinUIApplication | |||||
{ | |||||
/// <summary> | |||||
/// Initializes the singleton application object. This is the first line of authored code | |||||
/// executed, and as such is the logical equivalent of main() or WinMain(). | |||||
/// </summary> | |||||
public App() | |||||
{ | |||||
this.InitializeComponent(); | |||||
} | |||||
protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp(); | |||||
} | |||||
@ -0,0 +1,43 @@ | |||||
<?xml version="1.0" encoding="utf-8"?> | |||||
<Package | |||||
xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10" | |||||
xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10" | |||||
xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities" | |||||
IgnorableNamespaces="uap rescap"> | |||||
<Identity Name="maui-package-name-placeholder" Publisher="CN=User Name" Version="0.0.0.0" /> | |||||
<Properties> | |||||
<DisplayName>$placeholder$</DisplayName> | |||||
<PublisherDisplayName>User Name</PublisherDisplayName> | |||||
<Logo>$placeholder$.png</Logo> | |||||
</Properties> | |||||
<Dependencies> | |||||
<TargetDeviceFamily Name="Windows.Universal" MinVersion="10.0.17763.0" MaxVersionTested="10.0.19041.0" /> | |||||
<TargetDeviceFamily Name="Windows.Desktop" MinVersion="10.0.17763.0" MaxVersionTested="10.0.19041.0" /> | |||||
</Dependencies> | |||||
<Resources> | |||||
<Resource Language="x-generate" /> | |||||
</Resources> | |||||
<Applications> | |||||
<Application Id="App" Executable="$targetnametoken$.exe" EntryPoint="$targetentrypoint$"> | |||||
<uap:VisualElements | |||||
DisplayName="$placeholder$" | |||||
Description="$placeholder$" | |||||
Square150x150Logo="$placeholder$.png" | |||||
Square44x44Logo="$placeholder$.png" | |||||
BackgroundColor="transparent"> | |||||
<uap:DefaultTile Square71x71Logo="$placeholder$.png" Wide310x150Logo="$placeholder$.png" Square310x310Logo="$placeholder$.png" /> | |||||
<uap:SplashScreen Image="$placeholder$.png" /> | |||||
</uap:VisualElements> | |||||
</Application> | |||||
</Applications> | |||||
<Capabilities> | |||||
<rescap:Capability Name="runFullTrust" /> | |||||
</Capabilities> | |||||
</Package> |
@ -0,0 +1,15 @@ | |||||
<?xml version="1.0" encoding="utf-8"?> | |||||
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1"> | |||||
<assemblyIdentity version="1.0.0.0" name="GMCabsDriverAssistantSolution.WinUI.app"/> | |||||
<application xmlns="urn:schemas-microsoft-com:asm.v3"> | |||||
<windowsSettings> | |||||
<!-- The combination of below two tags have the following effect: | |||||
1) Per-Monitor for >= Windows 10 Anniversary Update | |||||
2) System < Windows 10 Anniversary Update | |||||
--> | |||||
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true/PM</dpiAware> | |||||
<dpiAwareness xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">PerMonitorV2, PerMonitor</dpiAwareness> | |||||
</windowsSettings> | |||||
</application> | |||||
</assembly> |
@ -0,0 +1,9 @@ | |||||
using Foundation; | |||||
namespace GMCabsDriverAssistantSolution; | |||||
[Register("AppDelegate")] | |||||
public class AppDelegate : MauiUIApplicationDelegate | |||||
{ | |||||
protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp(); | |||||
} |
@ -0,0 +1,32 @@ | |||||
<?xml version="1.0" encoding="UTF-8"?> | |||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | |||||
<plist version="1.0"> | |||||
<dict> | |||||
<key>LSRequiresIPhoneOS</key> | |||||
<true/> | |||||
<key>UIDeviceFamily</key> | |||||
<array> | |||||
<integer>1</integer> | |||||
<integer>2</integer> | |||||
</array> | |||||
<key>UIRequiredDeviceCapabilities</key> | |||||
<array> | |||||
<string>arm64</string> | |||||
</array> | |||||
<key>UISupportedInterfaceOrientations</key> | |||||
<array> | |||||
<string>UIInterfaceOrientationPortrait</string> | |||||
<string>UIInterfaceOrientationLandscapeLeft</string> | |||||
<string>UIInterfaceOrientationLandscapeRight</string> | |||||
</array> | |||||
<key>UISupportedInterfaceOrientations~ipad</key> | |||||
<array> | |||||
<string>UIInterfaceOrientationPortrait</string> | |||||
<string>UIInterfaceOrientationPortraitUpsideDown</string> | |||||
<string>UIInterfaceOrientationLandscapeLeft</string> | |||||
<string>UIInterfaceOrientationLandscapeRight</string> | |||||
</array> | |||||
<key>XSAppIconAssets</key> | |||||
<string>Assets.xcassets/appicon.appiconset</string> | |||||
</dict> | |||||
</plist> |
@ -0,0 +1,15 @@ | |||||
using ObjCRuntime; | |||||
using UIKit; | |||||
namespace GMCabsDriverAssistantSolution; | |||||
public class Program | |||||
{ | |||||
// This is the main entry point of the application. | |||||
static void Main(string[] args) | |||||
{ | |||||
// if you want to use a different Application Delegate class from "AppDelegate" | |||||
// you can specify it here. | |||||
UIApplication.Main(args, null, typeof(AppDelegate)); | |||||
} | |||||
} |
@ -0,0 +1,8 @@ | |||||
{ | |||||
"profiles": { | |||||
"Windows Machine": { | |||||
"commandName": "MsixPackage", | |||||
"nativeDebugging": false | |||||
} | |||||
} | |||||
} |
@ -0,0 +1,4 @@ | |||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?> | |||||
<svg width="456" height="456" viewBox="0 0 456 456" version="1.1" xmlns="http://www.w3.org/2000/svg"> | |||||
<rect x="0" y="0" width="456" height="456" fill="#512BD4" /> | |||||
</svg> |
@ -0,0 +1,8 @@ | |||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?> | |||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> | |||||
<svg width="456" height="456" viewBox="0 0 456 456" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;"> | |||||
<path d="m 105.50037,281.60863 c -2.70293,0 -5.00091,-0.90042 -6.893127,-2.70209 -1.892214,-1.84778 -2.837901,-4.04181 -2.837901,-6.58209 0,-2.58722 0.945687,-4.80389 2.837901,-6.65167 1.892217,-1.84778 4.190197,-2.77167 6.893127,-2.77167 2.74819,0 5.06798,0.92389 6.96019,2.77167 1.93749,1.84778 2.90581,4.06445 2.90581,6.65167 0,2.54028 -0.96832,4.73431 -2.90581,6.58209 -1.89221,1.80167 -4.212,2.70209 -6.96019,2.70209 z" style="fill:#ffffff;fill-rule:nonzero;stroke-width:0.838376" /> | |||||
<path d="M 213.56111,280.08446 H 195.99044 L 149.69953,207.0544 c -1.17121,-1.84778 -2.14037,-3.76515 -2.90581,-5.75126 h -0.40578 c 0.36051,2.12528 0.54076,6.67515 0.54076,13.6496 v 65.13172 h -15.54349 v -99.36009 h 18.71925 l 44.7374,71.29798 c 1.89222,2.95695 3.1087,4.98917 3.64945,6.09751 h 0.26996 c -0.45021,-2.6325 -0.67573,-7.09015 -0.67573,-13.37293 v -64.02256 h 15.47557 z" style="fill:#ffffff;fill-rule:nonzero;stroke-width:0.838376" /> | |||||
<path d="m 289.25134,280.08446 h -54.40052 v -99.36009 h 52.23835 v 13.99669 h -36.15411 v 28.13085 h 33.31621 v 13.9271 h -33.31621 v 29.37835 h 38.31628 z" style="fill:#ffffff;fill-rule:nonzero;stroke-width:0.838376" /> | |||||
<path d="M 366.56466,194.72106 H 338.7222 v 85.3634 h -16.08423 v -85.3634 h -27.77455 v -13.99669 h 71.70124 z" style="fill:#ffffff;fill-rule:nonzero;stroke-width:0.838376" /> | |||||
</svg> |