MobileDeviceServerFunctions.cs
3.03 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
using System;
using System.Collections.Generic;
using System.Linq;
using Sungero.Core;
using Sungero.CoreEntities;
using Sungero.MobileApps.MobileDevice;
using Sungero.MobileApps.Structures.MobileDevice;
using Sungero.MobileAppsExtensions;
namespace Sungero.MobileApps.Server
{
partial class MobileDeviceFunctions
{
/// <summary>
/// Отправляет сообщение о необходимости запроса клиентских логов.
/// </summary>
[Public, Remote(IsPure = true)]
public virtual void RequestLogs()
{
var operation = new Enumeration(Constants.MobileDevice.RequestLogs);
_obj.History.Write(operation, operation, null);
_obj.Save();
var args = Structures.MobileDevice.MobileDeviceRequestLogsEventArgs.Create(_obj.Employee.Id, _obj.DeviceId);
Sungero.MobileAppsExtensions.MessageQueueSender.Send(Constants.Module.MobileAppQueueName, args);
}
/// <summary>
/// Получает задержку в секундах до следующего запроса клиентских логов.
/// </summary>
/// <returns>Задержка в секундах до следующего запроса клиентских логов.</returns>
[Public, Remote(IsPure = true)]
public virtual int GetLogRequestDelay()
{
var operation = new Enumeration(Constants.MobileDevice.RequestLogs);
var lastRequest = _obj.History.GetAll().FirstOrDefault(t => t.HistoryDate >= Calendar.Now.AddSeconds(-Constants.MobileDevice.RequestTimeout) && t.Operation == operation);
if (lastRequest == null)
return 0;
return Constants.MobileDevice.RequestTimeout - (int)Math.Round((Calendar.Now - lastRequest.HistoryDate.Value).TotalSeconds);
}
/// <summary>
/// Отправляет сообщение о необходимости удаления данных с устройства.
/// </summary>
[Public, Remote(IsPure = true)]
public virtual void DeleteData()
{
var operation = new Enumeration(Constants.MobileDevice.DeleteData);
_obj.DeviceStatus = DeviceStatus.Disabled;
_obj.History.Write(operation, operation, null);
_obj.Save();
var args = Structures.MobileDevice.MobileDeviceDeleteDataEventArgs.Create(_obj.Employee.Id, _obj.DeviceId);
Sungero.MobileAppsExtensions.MessageQueueSender.Send(Constants.Module.MobileAppQueueName, args);
}
/// <summary>
/// Отправляет сообщение о необходимости сброса сеанса.
/// </summary>
[Public, Remote(IsPure = true)]
public virtual void ResetSeance()
{
var operation = new Enumeration(Constants.MobileDevice.ResetSeance);
_obj.History.Write(operation, operation, null);
_obj.Save();
var args = Structures.MobileDevice.MobileDeviceResetSeanceEventArgs.Create(_obj.Employee.Id, _obj.DeviceId);
Sungero.MobileAppsExtensions.MessageQueueSender.Send(Constants.Module.MobileAppQueueName, args);
}
}
}