Changeset 4
- Timestamp:
- Aug 24, 2019, 12:56:52 PM (5 years ago)
- Files:
-
- 2 deleted
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
/
-
Property svn:ignore
set to
__history
__recovery
-
Property svn:ignore
set to
-
trunk
- Property svn:ignore
-
old new 3 3 __recovery 4 4 __history 5 OdorikApi.dproj.local
-
- Property svn:ignore
-
trunk/UFormCalls.fmx
r3 r4 62 62 ExplicitSize.cx = 98.000000000000000000 63 63 ExplicitSize.cy = 49.000000000000000000 64 object ListView1: TListView 65 ItemAppearanceClassName = 'TListItemAppearance' 66 ItemEditAppearanceClassName = 'TListItemShowCheckAppearance' 67 HeaderAppearanceClassName = 'TListHeaderObjects' 68 FooterAppearanceClassName = 'TListHeaderObjects' 64 object ListBox1: TListBox 69 65 Align = Client 70 Margins.Left = 10.000000000000000000 71 Margins.Top = 10.000000000000000000 72 Margins.Right = 10.000000000000000000 73 Margins.Bottom = 10.000000000000000000 74 Size.Width = 276.000000000000000000 75 Size.Height = 317.000000000000000000 66 Size.Width = 296.000000000000000000 67 Size.Height = 337.000000000000000000 76 68 Size.PlatformDefault = False 77 69 TabOrder = 0 70 DisableFocusEffect = True 71 DefaultItemStyles.ItemStyle = '' 72 DefaultItemStyles.GroupHeaderStyle = '' 73 DefaultItemStyles.GroupFooterStyle = '' 74 Viewport.Width = 296.000000000000000000 75 Viewport.Height = 337.000000000000000000 78 76 end 79 77 end -
trunk/UFormCalls.pas
r3 r4 8 8 FMX.ListView.Types, FMX.ListView.Appearances, FMX.ListView.Adapters.Base, 9 9 FMX.ListView, FMX.TabControl, FMX.StdCtrls, FMX.Controls.Presentation, 10 System.DateUtils, System.TimeSpan, System.JSON; 10 System.DateUtils, System.TimeSpan, System.JSON, Generics.Collections, 11 UOdorikApi, FMX.Layouts, FMX.ListBox; 11 12 12 13 type … … 19 20 TabItemActive: TTabItem; 20 21 TabItemStatistics: TTabItem; 21 List View1: TListView;22 ListBox1: TListBox; 22 23 procedure SpeedButtonBackClick(Sender: TObject); 23 24 procedure TabControl1Change(Sender: TObject); … … 50 51 end; 51 52 52 function DateTimeToXMLTime(Value: TDateTime; ApplyLocalBias: Boolean = True): string;53 const54 Neg: array[Boolean] of string = ('+', '-');55 var56 Bias: Integer;57 begin58 Result := FormatDateTime('yyyy''-''mm''-''dd''T''hh'':''nn'':''ss''.''zzz', Value); { Do not localize }59 Bias := Trunc(TTimeZone.Local.GetUtcOffset(Value).TotalMinutes);60 if (Bias <> 0) and ApplyLocalBias then61 begin62 Result := Format('%s%s%.2d:%.2d', [Result, Neg[Bias > 0], { Do not localize }63 Abs(Bias) div MinsPerHour,64 Abs(Bias) mod MinsPerHour]);65 end else66 Result := Result + 'Z'; { Do not localize }67 end;68 69 53 procedure TFormCalls.TabControl1Change(Sender: TObject); 70 54 var 71 Response: string;72 55 IntervalFrom: TDateTime; 73 56 IntervalTo: TDateTime; 74 57 ListViewItem: TListViewItem; 75 Lines: TArray<string>; 76 I: Integer; 77 LJsonResponse: TJSONValue; 78 jv: TJSONValue; 79 joName: TJSONObject; 58 Call: TCall; 59 CallHistory: TList<TCall>; 80 60 begin 81 61 ListView1.Items.Clear; 82 62 IntervalTo := Now; 83 63 IntervalFrom := IntervalTo - OneHour * 24; 84 Response := FormMain.OdorikApi.SendGet('/calls.json', 'from=' + DateTimeToXMLTime(IntervalFrom) + 85 '&to=' + DateTimeToXMLTime(IntervalTo)); 86 LJsonResponse := TJSONObject.ParseJSONValue(Response); 87 for jv in LJsonResponse as TJSONArray do begin 88 joName := jv as TJSONObject; 64 CallHistory := FormMain.OdorikApi.GetCallHistory(IntervalFrom, IntervalTo); 65 for Call in CallHistory do begin 89 66 ListViewItem := ListView1.Items.Add; 90 ListViewItem.Text := joName.Get('source_number').JSONValue.Value;67 ListViewItem.Text := Call.SourceNumber; 91 68 end; 92 69 end; -
trunk/UOdorikApi.pas
r3 r4 4 4 5 5 uses 6 System.SysUtils, System.Types, System.Classes, IdHTTP6 System.SysUtils, System.Types, System.Classes, Generics.Collections, IdHTTP 7 7 {$IFDEF ANDROID},IdSSLOpenSSLHeaders{$endif}, IdIOHandler, IdIOHandlerSocket, 8 IdIOHandlerStack, IdSSL, IdSSLOpenSSL; 8 IdIOHandlerStack, IdSSL, IdSSLOpenSSL, System.DateUtils, System.TimeSpan, 9 System.JSON; 9 10 10 11 type 12 TCall = class 13 Oid: Integer; 14 RedirectionParentId: Integer; 15 Date: TDateTime; 16 Direction: string; 17 SourceNumber: string; 18 DestinatioNumber: string; 19 DestinationName: string; 20 Length: Integer; 21 RingingLength: Integer; 22 Status: string; 23 Price: Currency; 24 PricePerMinute: Currency; 25 BalanceAfter: Currency; 26 Line: Integer; 27 Recording: string; 28 end; 29 11 30 TOdorikApi = class(TComponent) 12 31 private … … 17 36 Password: string; 18 37 ServerUrl: string; 19 function GetCredit: Double;38 function GetCredit: Currency; 20 39 function SendGet(Path: string; Parameters: string = ''): string; 40 function GetCallHistory(TimeFrom, TimeTo: TDateTime): TList<TCall>; 21 41 constructor Create(AOwner: TComponent); override; 22 42 destructor Destroy; override; … … 53 73 end; 54 74 55 function TOdorikApi.GetCredit: Double; 75 function DateTimeToXMLTime(Value: TDateTime; ApplyLocalBias: Boolean = True): string; 76 const 77 Neg: array[Boolean] of string = ('+', '-'); 78 var 79 Bias: Integer; 80 begin 81 Result := FormatDateTime('yyyy''-''mm''-''dd''T''hh'':''nn'':''ss''.''zzz', Value); { Do not localize } 82 Bias := Trunc(TTimeZone.Local.GetUtcOffset(Value).TotalMinutes); 83 if (Bias <> 0) and ApplyLocalBias then 84 begin 85 Result := Format('%s%s%.2d:%.2d', [Result, Neg[Bias > 0], { Do not localize } 86 Abs(Bias) div MinsPerHour, 87 Abs(Bias) mod MinsPerHour]); 88 end else 89 Result := Result + 'Z'; { Do not localize } 90 end; 91 92 function TOdorikApi.GetCallHistory(TimeFrom, TimeTo: TDateTime): TList<TCall>; 93 var 94 Response: string; 95 LJsonResponse: TJSONValue; 96 jv: TJSONValue; 97 joName: TJSONObject; 98 Call: TCall; 99 begin 100 Result := TList<TCall>.Create; 101 Response := SendGet('/calls.json', 'from=' + DateTimeToXMLTime(TimeFrom) + 102 '&to=' + DateTimeToXMLTime(TimeTo)); 103 LJsonResponse := TJSONObject.ParseJSONValue(Response); 104 for jv in LJsonResponse as TJSONArray do begin 105 joName := jv as TJSONObject; 106 Call := TCall.Create; 107 Call.SourceNumber := joName.Get('source_number').JSONValue.Value; 108 Call.DestinatioNumber := joName.Get('destination_number').JSONValue.Value; 109 Result.Add(Call); 110 end; 111 end; 112 113 function TOdorikApi.GetCredit: Currency; 56 114 var 57 115 Response: string;
Note:
See TracChangeset
for help on using the changeset viewer.