Card.cs
4.56 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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Web.Script.Serialization;
namespace MoyaAdminLib
{
public class Card
{
public static string CARD_STATE_PRINTED = "PRINTED";
public static string CARD_BARCODE_PREFIX = "277";
public static string CARD_PLACE = "cardplace";
//{"cardId":3990,"state":"PENDING_VALIDATION","cardTemplate":"pelaaja","username":"Miketzu","wholeName":"Mirco Renko"}
public int cardId;
public string state;
public string cardTemplate;
public string username;
public string wholeName;
public String Label()
{
return cardId + ", " + username + ", " + wholeName;
}
public static bool ParseCardId(string data, out int id)
{
id = 0;
if (data.Length == 13 && data.Substring(0, 3) == CARD_BARCODE_PREFIX)
{
int.TryParse(data.Substring(3, 9), out id);
if (id > 0)
return true;
}
return false;
}
public string GetCardPlace(){
if (this.state == Card.CARD_STATE_PRINTED)
{
string json = "";
RestClient client = new RestClient(RestClient.ApiURL);
try
{
json = client.MakeRequest("meta/v1/printedcard/" + this.cardId + "/card-filing");
}
catch (ApplicationException ex)
{
if (!ex.Message.Contains("HTTP NoContent"))
return "";
}
if (json != null && json != "")
{
MetaData data = getValue(json);
int bookNumber = 0;
int pageNumber = 0;
int slotNumber = 0;
getCardPlace(data, out bookNumber, out pageNumber, out slotNumber);
return bookNumber + "." + pageNumber + "." + slotNumber;
}
}
return "";
}
private MetaData getValue(string ret)
{
MetaData data = null;
if (ret != null && ret != "")
{
ret = ret.Trim();
if (ret.StartsWith("{") && ret.EndsWith("}"))
{
ret = ret.Replace("{", "");
ret = ret.Replace("}", "");
if (ret.Contains(":"))
{
data = new MetaData();
string[] fields = ret.Split(new string[] { ":" }, StringSplitOptions.RemoveEmptyEntries);
if (fields.Length == 2)
{
if (fields[0].StartsWith("\""))
fields[0] = fields[0].Substring(1, fields[0].Length - 1);
if (fields[0].EndsWith("\""))
fields[0] = fields[0].Substring(0, fields[0].Length - 1);
data.key = fields[0];
if (fields[1].StartsWith("\""))
fields[1] = fields[1].Substring(1, fields[1].Length - 1);
if (fields[1].EndsWith("\""))
fields[1] = fields[1].Substring(0, fields[1].Length - 1);
data.value = fields[1];
}
}
}
}
return data;
}
private void getCardPlace(MetaData data, out int bookNumber, out int pageNumber, out int slotNumber)
{
bookNumber = 0;
pageNumber = 0;
slotNumber = 0;
if (data != null)
{
if (data.key == CARD_PLACE)
{
if (data.value != null && data.value != "")
{
string[] fields = data.value.Split(new string[] { "." }, StringSplitOptions.None);
if (fields.Length > 2)
{
if (fields.Length == 3)
{
int.TryParse(fields[0], out bookNumber);
int.TryParse(fields[1], out pageNumber);
int.TryParse(fields[2], out slotNumber);
}
}
}
}
}
}
}
}