|
@@ -0,0 +1,118 @@
|
|
1
|
+using System;
|
|
2
|
+using System.Collections.Generic;
|
|
3
|
+using System.Text.Json;
|
|
4
|
+using System.Threading.Tasks;
|
|
5
|
+using Unibase.Data.Expressions;
|
|
6
|
+using Unibase.Data.Sql;
|
|
7
|
+using Unibase.Platform.Apps.Managers;
|
|
8
|
+using Unibase.Platform.Data;
|
|
9
|
+using Unibase.Platform.Forms.Providers;
|
|
10
|
+using Unibase.Platform.Keys;
|
|
11
|
+
|
|
12
|
+namespace CRM.Visitors.ActionProviders
|
|
13
|
+{
|
|
14
|
+ public class UpdateCheckoutPreAction : BaseFormActionProvider, IFormActionProvider
|
|
15
|
+ {
|
|
16
|
+ public string ControllerClass
|
|
17
|
+ {
|
|
18
|
+ get
|
|
19
|
+ {
|
|
20
|
+ return "Bizgaze.CRM.Visitors.ActionProviders.UpdateCheckoutPreAction";
|
|
21
|
+
|
|
22
|
+ }
|
|
23
|
+ }
|
|
24
|
+ public string FormActionName
|
|
25
|
+ {
|
|
26
|
+ get
|
|
27
|
+ {
|
|
28
|
+ return "UpdateCheckoutPreAction";
|
|
29
|
+ }
|
|
30
|
+ }
|
|
31
|
+ public string Description
|
|
32
|
+ {
|
|
33
|
+ get
|
|
34
|
+ {
|
|
35
|
+ return "Update Checkout PreAction";
|
|
36
|
+ }
|
|
37
|
+ }
|
|
38
|
+ public UniqueKey UniqueId
|
|
39
|
+ {
|
|
40
|
+ get
|
|
41
|
+ {
|
|
42
|
+ return Bizgaze.CRM.Actions.UpdateCheckoutPreAction;
|
|
43
|
+ }
|
|
44
|
+ }
|
|
45
|
+ public int ActionType
|
|
46
|
+ {
|
|
47
|
+ get
|
|
48
|
+ {
|
|
49
|
+ return (int)Unibase.Platform.Forms.Enums.FormActionProvider.PreAction;
|
|
50
|
+ }
|
|
51
|
+ }
|
|
52
|
+
|
|
53
|
+ public async Task<ActionResponse<FormActionResponse>> ExecuteAsync(ActionRequest srequest, FormActionProviderObject providerObject)
|
|
54
|
+ {
|
|
55
|
+
|
|
56
|
+ using (var requestTrans = await srequest.BeginTransactionAsync())
|
|
57
|
+ {
|
|
58
|
+ var IdValue = providerObject.IdValue;
|
|
59
|
+ var arequest = SelectRequest.FromRequest(srequest);
|
|
60
|
+ var obj = providerObject.RequestObject;
|
|
61
|
+ var returnresponse = new FormActionResponse();
|
|
62
|
+ var defaultPKValue = providerObject.DefaultPKValue;
|
|
63
|
+ var stageManager = Unibase.Dependency.DependencyConfig.Resolve<IStageManager>();
|
|
64
|
+ dynamic visitorparam = new Dictionary<string, object>();
|
|
65
|
+ var dictObj = obj as IDictionary<string, dynamic>;
|
|
66
|
+ var connection = GetConnection(srequest);
|
|
67
|
+ var req = dictObj as IDictionary<string, object>;
|
|
68
|
+ var code = Convert.ChangeType(dictObj["uniqueid"].ToString(), typeof(string));
|
|
69
|
+ var select = new Unibase.Data.Sql.Select("bizgazecrm_visitors").AllColumns().Where("code", code);
|
|
70
|
+ var parameters = new List<Unibase.Data.Parameter>();
|
|
71
|
+ parameters.Add(new Unibase.Data.Parameter("@code", code));
|
|
72
|
+ var dt = await GetDataTableAsync(arequest, select, parameters);
|
|
73
|
+ if (dt.Rows.Count > 0)
|
|
74
|
+ {
|
|
75
|
+ var visitorManager = Unibase.Dependency.DependencyConfig.Resolve<Bizgaze.CRM.Visitors.Managers.IVisitorManager>();
|
|
76
|
+ var visitorid = dt.Rows[0]["visitorid"];
|
|
77
|
+ var tenantId = dt.Rows[0]["tenantid"];
|
|
78
|
+ var feedBackJson = Convert.ChangeType(req["feedbackrating"].ToString(), typeof(object)).ToString();
|
|
79
|
+ var feedBackObj = JsonSerializer.Deserialize<CRM.Visitors.Request.VisitorRequest>(feedBackJson);
|
|
80
|
+ var comments = feedBackObj.Comments;
|
|
81
|
+ var rating = feedBackObj.Rating;
|
|
82
|
+ var updateValues = new Dictionary<string, object>();
|
|
83
|
+ updateValues.Add("checkoutdate", DateTime.Now);
|
|
84
|
+ updateValues.Add("createddate", DateTime.Now);
|
|
85
|
+ updateValues.Add("uniqueid", code);
|
|
86
|
+ updateValues.Add("comments", comments.ToString());
|
|
87
|
+ updateValues.Add("rating", Convert.ToInt32(rating));
|
|
88
|
+ var updateQry = new Update("bizgazecrm_visitorcheckout").Values(updateValues).Where(Exp.Eq("visitorid", visitorid));
|
|
89
|
+ var dm = await _repository.ExecuteAsync(srequest, updateQry);
|
|
90
|
+ var visitorInfo = await visitorManager.GetpreVisitorsAsync(arequest, code);
|
|
91
|
+ var stageStatusName = "CheckOut";
|
|
92
|
+ var installedAppId = Convert.ToInt64(visitorInfo.Result.Installedappid);
|
|
93
|
+ var stage = await stageManager.GetStageByStageStatusAsync(arequest, installedAppId, stageStatusName);
|
|
94
|
+ var NewStageId = stage.Result.StageId;
|
|
95
|
+ var UpdateStage = new Update("bizgazecrm_visitors").Value("stageid", NewStageId).Where(Exp.Eq("visitorId", visitorid));
|
|
96
|
+ await _repository.ExecuteAsync(srequest, UpdateStage);
|
|
97
|
+ }
|
|
98
|
+ returnresponse = new FormActionResponse();
|
|
99
|
+ returnresponse.Obj = null;
|
|
100
|
+ returnresponse.PkValue = 0;
|
|
101
|
+ return ActionResponse<FormActionResponse>.CreateSuccessResponse("success", returnresponse);
|
|
102
|
+ }
|
|
103
|
+ }
|
|
104
|
+ public List<UniqueKey> AppliedApps
|
|
105
|
+ {
|
|
106
|
+ get
|
|
107
|
+ {
|
|
108
|
+ return new List<UniqueKey>() {
|
|
109
|
+ Bizgaze.CRM.Actions.UpdateCheckoutPreAction
|
|
110
|
+ };
|
|
111
|
+ }
|
|
112
|
+ }
|
|
113
|
+
|
|
114
|
+ }
|
|
115
|
+}
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
|