|
@@ -13,11 +13,41 @@ using Unibase.Platform.Data;
|
13
|
13
|
using Unibase.Platform.DataSources.Attributes;
|
14
|
14
|
using Unibase.Platform.Managers;
|
15
|
15
|
using Unibase.Data.Sql;
|
|
16
|
+using System.Text.Json;
|
|
17
|
+using Org.BouncyCastle.Asn1.Ocsp;
|
|
18
|
+using ChoETL;
|
|
19
|
+using MongoDB.Libmongocrypt;
|
|
20
|
+using iText.StyledXmlParser.Jsoup.Select;
|
16
|
21
|
|
17
|
22
|
namespace Bizgaze.CRM.Visitors.Managers
|
18
|
23
|
{
|
19
|
24
|
internal partial class VisitorManager : BaseManager, IVisitorManager
|
20
|
25
|
{
|
|
26
|
+ [SelectMethod(ApiName = "Get pre visitors", AppName = "crm", Description = "Get pre visitors", UniqueName = "bizgaze_transact_visitors_Getprevisitors", MethodName = "Getprevisitors", ModuleName = "visitors", PackageName = "bizgaze", ParamName1 = "code")]
|
|
27
|
+ public async Task<SelectResponse<Bizgaze.CRM.Visitors.Infos.Visitor>> GetpreVisitorsAsync(SelectRequest srequest, string code)
|
|
28
|
+ {
|
|
29
|
+ var exp = srequest.Filter();
|
|
30
|
+ exp &= Exp.Eq(Bizgaze.CRM.Visitors.Infos.Visitor.Property.Code.ToString(), code);
|
|
31
|
+ srequest.Filter(exp);
|
|
32
|
+ var visData = await GetSingleAsync<Bizgaze.CRM.Visitors.Infos.Visitor>(srequest);
|
|
33
|
+
|
|
34
|
+ if (visData.Result != null)
|
|
35
|
+ {
|
|
36
|
+ var refStatusId = visData.Result.RefStatusId;
|
|
37
|
+ if (refStatusId != 2)
|
|
38
|
+ {
|
|
39
|
+ return visData;
|
|
40
|
+
|
|
41
|
+ }
|
|
42
|
+ }
|
|
43
|
+ else
|
|
44
|
+ {
|
|
45
|
+ return SelectResponse<Bizgaze.CRM.Visitors.Infos.Visitor>.CreateErrorResponse("404", "Please Enter A Valid Uniqueid!");
|
|
46
|
+
|
|
47
|
+ }
|
|
48
|
+ return SelectResponse<Bizgaze.CRM.Visitors.Infos.Visitor>.CreateErrorResponse("404", "you have been already checked out");
|
|
49
|
+
|
|
50
|
+ }
|
21
|
51
|
|
22
|
52
|
[SelectMethod(ApiName = "Get pre visitors id", AppName = "crm", Description = "Get pre visitors id", UniqueName = "bizgaze_transact_visitors_Getprevisitorsid", MethodName = "getprevisitorid", ModuleName = "visitors", PackageName = "bizgaze", ParamName1 = "code")]
|
23
|
53
|
public async Task<SelectResponse> GetVisitorsIDAsync(SelectRequest srequest, string code)
|
|
@@ -25,10 +55,20 @@ namespace Bizgaze.CRM.Visitors.Managers
|
25
|
55
|
var exp = srequest.Filter();
|
26
|
56
|
exp &= Exp.Eq(Bizgaze.CRM.Visitors.Infos.Visitor.Property.Code.ToString(), code);
|
27
|
57
|
srequest.Filter(exp);
|
28
|
|
- var select = "select visitorid,* from bizgazecrm_visitors where code='"+code+"' order by createddate desc";
|
|
58
|
+ var visData = await GetSingleAsync<Bizgaze.CRM.Visitors.Infos.Visitor>(srequest);
|
|
59
|
+ var refstatusid = visData.Result.RefStatusId;
|
|
60
|
+ if (refstatusid == 2)
|
|
61
|
+ {
|
|
62
|
+ return SelectResponse.CreateErrorResponse("417", "you have been already checked out");
|
|
63
|
+ }
|
|
64
|
+ if (refstatusid == 3)
|
|
65
|
+ {
|
|
66
|
+ return SelectResponse.CreateErrorResponse("417", "please Check-In First");
|
|
67
|
+ }
|
|
68
|
+ var select = "select visitorid,* from bizgazecrm_visitors where code='" + code + "' order by createddate desc";
|
29
|
69
|
var dt = await _dbContext.GetTableAsync(GetConnectionAsync(srequest), select, Unibase.Data.Enums.InstructionType.Query, null);
|
30
|
70
|
var visitorid = dt.Rows[0]["visitorid"].ToString();
|
31
|
|
- var select1 = "select e.contactname,c.cityname,n.mobilenumber,* from bizgazecrm_visitors v inner join bizgazecrm_visitornumbers n on n.visitorid=v.visitorid inner join bizgazecrm_contacts e on e.contactid = v.employeeid inner join bizgazecrm_cities c on c.cityid = v.cityid where v.visitorid=" + visitorid;
|
|
71
|
+ var select1 = "select e.contactname,c.cityname,* from bizgazecrm_visitors v inner join bizgazecrm_contacts e on e.contactid = v.employeeid inner join bizgazecrm_cities c on c.cityid = v.cityid where v.visitorid=" + visitorid;
|
32
|
72
|
var dt1 = await _dbContext.GetTableAsync(GetConnectionAsync(srequest), select1, Unibase.Data.Enums.InstructionType.Query, null);
|
33
|
73
|
var tabledata = Unibase.Core.Helpers.JsonHelper.ToJson(dt1);
|
34
|
74
|
string json = System.Text.Json.JsonSerializer.Serialize(tabledata);
|
|
@@ -46,23 +86,47 @@ namespace Bizgaze.CRM.Visitors.Managers
|
46
|
86
|
return data;
|
47
|
87
|
}
|
48
|
88
|
#endregion
|
49
|
|
-
|
|
89
|
+ #region Getting data By VisitorId
|
|
90
|
+ public async Task<SelectResponse> GetVisitordataByIdAsync(SelectRequest request, long VisitorId)
|
|
91
|
+ {
|
|
92
|
+ var exp = request.Filter();
|
|
93
|
+ exp = exp & Unibase.Data.Expressions.Exp.Eq(Infos.Visitor.Property.VisitorId.ToString(), VisitorId);
|
|
94
|
+ request.Filter(exp);
|
|
95
|
+ //var sql = "select c.cityname, e.contactname,* from bizgazecrm_visitors v inner join bizgazecrm_contacts e on e.contactid = v.employeeid inner join bizgazecrm_cities c on c.cityid = v.cityid where visitorid=" + VisitorId;
|
|
96
|
+ var sql = "select d.visitorid,d.fullname,d.code,(d.checkindate|| ' & ' ||d.checkintime) as datetime,d.cityname,d.contactname,Case when d.purposeofvisit=1 then 'Interview' when d.purposeofvisit=2 then 'Official Meeting' when d.purposeofvisit=3 then 'Meeting an Employee' when d.purposeofvisit=4 then 'Package Delivery' when d.purposeofvisit=5 then 'Others' end as purposeofvisittype,d.photourl from (select v.visitorid,v.fullname,v.code,v.photourl, TO_CHAR(v.checkindate, 'DD/MM/YYYY') as checkindate, UPPER(TO_CHAR(v.checkindate, 'HH:MI:SS AM')) AS checkintime,v.purposeofvisit,c.cityname, e.contactname from bizgazecrm_visitors v inner join bizgazecrm_contacts e on e.contactid = v.employeeid inner join bizgazecrm_cities c on c.cityid = v.cityid)d where visitorid = " + VisitorId;
|
|
97
|
+ var dt = await _dbContext.GetTableAsync(GetConnectionAsync(request), sql, Unibase.Data.Enums.InstructionType.Query, null);
|
|
98
|
+ var tabledata = Unibase.Core.Helpers.JsonHelper.ToJson(dt);
|
|
99
|
+ string json = System.Text.Json.JsonSerializer.Serialize(tabledata);
|
|
100
|
+ return new SelectResponse() { Result = json };
|
|
101
|
+ }
|
|
102
|
+ #endregion
|
|
103
|
+
|
50
|
104
|
#region Get Visitors html
|
51
|
105
|
//This method is used to get the html of a visitor. It takes a Visitor ID as an argument, then gets the related templates from Unibase.Platform.Templates.Managers.ITemplateManager, if the templates are found the id is assigned to the variable "templateid" and the information from GetVisitorByIdAsync is used to populate the fields in the template. In the end, the PrintTemplate object is returned with the PrintHTML.
|
52
|
106
|
[SelectMethod(ApiName = "Get visitors Html", AppName = "crm", Description = "Get visitors Html", UniqueName = "bizgaze_transact_visitors_GetvisitorsHtml", MethodName = "getvisitorshtml", ModuleName = "visitors", PackageName = "bizgaze", ParamName1 = "visitorid")]
|
53
|
107
|
public async Task<SelectResponse<Unibase.Platform.Templates.Infos.PrintTemplate>> GetVisitorshtmlAsync(SelectRequest srequest, long VisitorId)
|
54
|
108
|
{
|
|
109
|
+ var exp = srequest.Filter();
|
|
110
|
+ exp = exp & Unibase.Data.Expressions.Exp.Eq(Infos.Visitor.Property.VisitorId.ToString(), VisitorId);
|
|
111
|
+ srequest.Filter(exp);
|
|
112
|
+ var data = await GetSingleAsync<Infos.Visitor>(srequest);
|
55
|
113
|
long templateid = 0;
|
56
|
|
- //var appManager = Unibase.Dependency.DependencyConfig.Resolve<Unibase.Platform.Apps.Managers.IAppManager>();
|
57
|
114
|
var templateManager = Unibase.Dependency.DependencyConfig.Resolve<Unibase.Platform.Templates.Managers.ITemplateManager>();
|
58
|
115
|
var templateInfos = await templateManager.GetTemplatesAsync(srequest, "Bizgaze_Extension_CRM_CRM_TemplateProvider_Visitors");
|
59
|
116
|
if (templateInfos.Result != null && templateInfos.Result.Count > 0)
|
60
|
117
|
{
|
61
|
118
|
templateid = templateInfos.Result[0].TemplateId;
|
62
|
119
|
}
|
|
120
|
+ var sql = "select code from bizgazecrm_visitors where visitorid=" + VisitorId;
|
|
121
|
+ var selectSQL = new Unibase.Data.Sql.Select().FromQuery(sql).AllColumns();
|
|
122
|
+ var dt = await GetDataTableAsync(srequest, selectSQL, null);
|
|
123
|
+ var code = dt.Rows[0]["code"].ToString();
|
|
124
|
+ var sql1 = "select visitorid from bizgazecrm_visitors where code='" + code + "' order by createddate desc";
|
|
125
|
+ var selectSQL1 = new Unibase.Data.Sql.Select().FromQuery(sql1).AllColumns();
|
|
126
|
+ var dt1 = await GetDataTableAsync(srequest, selectSQL1, null);
|
|
127
|
+ var id = Convert.ToInt64 (dt1.Rows[0]["visitorid"]);
|
63
|
128
|
var result = new SelectResponse<Unibase.Platform.Templates.Infos.PrintTemplate>();
|
64
|
129
|
var printTemplate = new Unibase.Platform.Templates.Infos.PrintTemplate();
|
65
|
|
- //var templateManager = //Unibase.Dependency.DependencyConfig.Resolve<Unibase.Platform.Templates.Managers.ITemplateManager>();
|
66
|
130
|
var _dbContext = DependencyConfig.Resolve<Unibase.Data.IDbContext>();
|
67
|
131
|
Unibase.Platform.Templates.Helpers.TemplateHelper helper = new Unibase.Platform.Templates.Helpers.TemplateHelper(_dbContext);
|
68
|
132
|
var VisitorInfo_ = await GetVisitorByIdAsync(srequest, VisitorId);
|
|
@@ -74,48 +138,55 @@ namespace Bizgaze.CRM.Visitors.Managers
|
74
|
138
|
{
|
75
|
139
|
return SelectResponse<Unibase.Platform.Templates.Infos.PrintTemplate>.CreateErrorResponse("1", "Template Not Found");
|
76
|
140
|
}
|
77
|
|
- string CreatedDate = VisitorInfo_.Result.CheckInDate.ToString("dd-MM-yyyy hh:mm:ss tt");
|
78
|
141
|
var template = System.Web.HttpUtility.UrlDecode(templateInfo.TemplateText.ToString());
|
|
142
|
+ //var code = VisitorInfo_.Result.Code;
|
|
143
|
+ var mobilenumber = VisitorInfo_.Result.MobileNumber;
|
|
144
|
+ //var visitorcard = await GetVisitorsIDAsync(srequest, code);
|
|
145
|
+ //var purposeofvisit = await VisitorsbyMobileNumberAsync(srequest, mobilenumber);
|
|
146
|
+ // var purposeofvisittype = purposeofvisit.Result.PurposeOfVisitType;
|
|
147
|
+ var visitordata = await GetVisitordataByIdAsync(srequest, id);
|
|
148
|
+ var scanobj = System.Text.Json.JsonSerializer.Deserialize<List<ExpandoObject>>(visitordata.Result);
|
|
149
|
+ var _Obj = scanobj[0] as IDictionary<string, dynamic>;
|
|
150
|
+ //string checkindate = _Obj["checkindate"].ToString();
|
|
151
|
+ string Checkindate = VisitorInfo_.Result.CheckInDate.ToString("dd-MM-yyyy hh:mm:ss tt");
|
79
|
152
|
string multiTemplateText = "";
|
80
|
153
|
if (template.Contains("{{fullname}}"))
|
81
|
154
|
{
|
82
|
|
- template = template.Replace("{{fullname}}", VisitorInfo_.Result.FullName);
|
|
155
|
+ template = template.Replace("{{fullname}}", _Obj["fullname"].ToString());
|
83
|
156
|
}
|
84
|
157
|
if (template.Contains("{{cityname}}"))
|
85
|
158
|
{
|
86
|
|
- template = template.Replace("{{cityname}}", VisitorInfo_.Result.CityName);
|
|
159
|
+ template = template.Replace("{{cityname}}", _Obj["cityname"].ToString());
|
87
|
160
|
}
|
88
|
161
|
if (template.Contains("{{purposeofvisit}}"))
|
89
|
162
|
{
|
90
|
|
- template = template.Replace("{{purposeofvisit}}", VisitorInfo_.Result.PurposeOfVisitType);
|
|
163
|
+ template = template.Replace("{{purposeofvisit}}", _Obj["purposeofvisittype"].ToString());
|
91
|
164
|
}
|
92
|
165
|
if (template.Contains("{{phonenumber}}"))
|
93
|
166
|
{
|
94
|
|
- template = template.Replace("{{phonenumber}}", VisitorInfo_.Result.MobileNumber);
|
|
167
|
+ template = template.Replace("{{phonenumber}}", mobilenumber);
|
95
|
168
|
}
|
96
|
169
|
if (template.Contains("{{code}}"))
|
97
|
170
|
{
|
98
|
|
- template = template.Replace("{{code}}", VisitorInfo_.Result.Code);
|
|
171
|
+ template = template.Replace("{{code}}", _Obj["code"].ToString());
|
99
|
172
|
}
|
100
|
173
|
if (template.Contains("{{createddate}}"))
|
101
|
174
|
{
|
102
|
|
- template = template.Replace("{{createddate}}", CreatedDate.ToString());
|
|
175
|
+ template = template.Replace("{{createddate}}", _Obj["datetime"].ToString());
|
103
|
176
|
}
|
104
|
177
|
if (template.Contains("{{photourl}}"))
|
105
|
178
|
{
|
106
|
|
- template = template.Replace("{{photourl}}", VisitorInfo_.Result.PhotoUrl);
|
|
179
|
+ template = template.Replace("{{photourl}}", _Obj["photourl"].ToString());
|
107
|
180
|
}
|
108
|
181
|
if (template.Contains("{{HostName}}"))
|
109
|
182
|
{
|
110
|
|
- template = template.Replace("{{HostName}}", VisitorInfo_.Result.HostName);
|
|
183
|
+ template = template.Replace("{{HostName}}", _Obj["contactname"].ToString());
|
111
|
184
|
}
|
112
|
185
|
if (template.Contains("{{imageurl}}"))
|
113
|
186
|
{
|
114
|
187
|
template = template.Replace("{{imageurl}}", VisitorInfo_.Result.ImageUrl);
|
115
|
188
|
}
|
116
|
|
-
|
117
|
189
|
multiTemplateText = template;
|
118
|
|
-
|
119
|
190
|
printTemplate.PrintHTML = multiTemplateText;
|
120
|
191
|
printTemplate.FileName = "Visitors";
|
121
|
192
|
printTemplate.PkId = VisitorId;
|
|
@@ -134,32 +205,7 @@ namespace Bizgaze.CRM.Visitors.Managers
|
134
|
205
|
/***/
|
135
|
206
|
|
136
|
207
|
|
137
|
|
- [SelectMethod(ApiName = "Get pre visitors", AppName = "crm", Description = "Get pre visitors", UniqueName = "bizgaze_transact_visitors_Getprevisitors", MethodName = "Getprevisitors", ModuleName = "visitors", PackageName = "bizgaze", ParamName1 = "code")]
|
138
|
|
- public async Task<SelectResponse<Bizgaze.CRM.Visitors.Infos.Visitor>> GetpreVisitorsAsync(SelectRequest srequest, string code)
|
139
|
|
- {
|
140
|
|
- var exp = srequest.Filter();
|
141
|
|
- exp &= Exp.Eq(Bizgaze.CRM.Visitors.Infos.Visitor.Property.Code.ToString(), code);
|
142
|
|
- srequest.Filter(exp);
|
143
|
|
- var visData = await GetSingleAsync<Bizgaze.CRM.Visitors.Infos.Visitor>(srequest);
|
144
|
|
-
|
145
|
|
- if (visData.Result != null)
|
146
|
|
- {
|
147
|
|
- var refStatusId = visData.Result.RefStatusId;
|
148
|
|
- if (refStatusId != 2)
|
149
|
|
- {
|
150
|
|
- return visData;
|
151
|
|
-
|
152
|
|
- }
|
153
|
|
- }
|
154
|
|
- else
|
155
|
|
- {
|
156
|
|
- return SelectResponse<Bizgaze.CRM.Visitors.Infos.Visitor>.CreateErrorResponse("404", "Please Enter A Valid Uniqueid!");
|
157
|
|
-
|
158
|
|
- }
|
159
|
|
- return SelectResponse<Bizgaze.CRM.Visitors.Infos.Visitor>.CreateErrorResponse("404", "you have been already checked out");
|
160
|
|
-
|
161
|
|
- }
|
162
|
|
-
|
|
208
|
+
|
163
|
209
|
|
164
|
210
|
#region Visitor Agreement
|
165
|
211
|
/*
|
|
@@ -230,7 +276,10 @@ namespace Bizgaze.CRM.Visitors.Managers
|
230
|
276
|
public async Task<SelectResponse<Bizgaze.CRM.Visitors.Infos.Visitor>> VisitorsbyMobileNumberAsync(SelectRequest srequest, string MobileNumber)
|
231
|
277
|
{
|
232
|
278
|
var exp = srequest.Filter();
|
233
|
|
- exp = exp & Exp.Eq(Bizgaze.CRM.Visitors.Infos.Visitor.Property.MobileNumber.ToString(), MobileNumber);
|
|
279
|
+ var select = "select visitorid,* from bizgazecrm_visitornumbers where mobilenumber='" + MobileNumber + "' order by lastupdateddate desc";
|
|
280
|
+ var dt = await _dbContext.GetTableAsync(GetConnectionAsync(srequest), select, Unibase.Data.Enums.InstructionType.Query, null);
|
|
281
|
+ var visitorid = dt.Rows[0]["visitorid"];
|
|
282
|
+ exp = exp & Exp.Eq(Bizgaze.CRM.Visitors.Infos.Visitor.Property.VisitorId.ToString(), visitorid);
|
234
|
283
|
srequest.Filter(exp);
|
235
|
284
|
return await GetSingleAsync<Bizgaze.CRM.Visitors.Infos.Visitor>(srequest);
|
236
|
285
|
}
|