using Bizgaze.CRM; using Bizgaze.CRM.Visitors.Infos; using Bizgaze.CRM.Visitors.Managers; using ChoETL; using System; using System.Collections.Generic; using System.Dynamic; using System.Linq; using System.Text; using System.Text.Json; using System.Threading.Tasks; using Unibase.Data; using Unibase.Data.Expressions; using Unibase.Data.Sql; using Unibase.Dependency; using Unibase.Platform.Apps.Managers; using Unibase.Platform.Data; using Unibase.Platform.Forms.Providers; using Unibase.Platform.Keys; using Unibase.Platform.Portability.Providers; using Unibase.Platform.Tenants.Localization; namespace Bizgaze.CRM.Visitors.ActionProviders { public class UpdateVisitorPreInvitePreAction : BaseFormActionProvider, IFormActionProvider { public string ControllerClass { get { return "Bizgaze.CRM.Visitors.ActionProviders.UpdateVisitorPreInvitePreAction"; } } public string FormActionName { get { return "UpdateVisitorPreInviteForm"; } } public string Description { get { return "Update Visitor Pre Invite PreAction"; } } public UniqueKey UniqueId { get { return Bizgaze.CRM.Actions.UpdateVisitorPreInvite; } } public int ActionType { get { return (int)Unibase.Platform.Forms.Enums.FormActionProvider.PreAction; } } public async Task> ExecuteAsync(ActionRequest request, FormActionProviderObject providerObject) { var IdValue = providerObject.IdValue; var srequest = SelectRequest.FromRequest(request); var obj = providerObject.RequestObject; var returnresponse = new FormActionResponse(); var defaultPKValue = providerObject.DefaultPKValue; var stageManager = Unibase.Dependency.DependencyConfig.Resolve(); var visitorManager = Unibase.Dependency.DependencyConfig.Resolve(); var dictObj = obj as IDictionary; dictObj.Add("lastupdateddate", DateTime.Now); dictObj.Add("checkindate", DateTime.Now); var CaptureImageObj = Convert.ChangeType(dictObj["Captureimage"].ToString(), typeof(object)).ToString(); var deserializeimagesObj = JsonSerializer.Deserialize>(CaptureImageObj); for (var k = 0; k < deserializeimagesObj.Count; k++) { var data1 = deserializeimagesObj[k]; var CaptureImageData = data1 as IDictionary; var image = Convert.ChangeType(CaptureImageData["image"].ToString(), typeof(string)).ToString(); var MobileNumber = dictObj["mobilenumber"].ToString(); var employeeId = Convert.ChangeType(dictObj["employeeid"].ToString(), typeof(long)); var cityId = Convert.ChangeType(dictObj["cityid"].ToString(), typeof(long)); var visitornumberId = Convert.ChangeType(dictObj["visitornumberid"].ToString(), typeof(long)); var purposeofvisit = Convert.ChangeType(dictObj["purposeofvisit"].ToString(), typeof(long)); long visitorid = 0; var visitorsinfo = await visitorManager.VisitorsbyMobileNumberAsync(srequest, MobileNumber); Int32 refstatusid = 0; var stageStatusName = ""; if (visitorsinfo.Result != null) { refstatusid = visitorsinfo.Result.RefStatusId; visitorid = visitorsinfo.Result.VisitorId; if (refstatusid == 1 || refstatusid == 2) { return ActionResponse.CreateErrorResponse("1", "Visitor Already Exists"); } if (refstatusid == 3) { var agreement = visitorsinfo.Result.Agreement; visitorsinfo.Result.Agreement = agreement; dictObj["agreement"] = true; dictObj["visitorid"] = visitorid; dictObj["visitoremailid"] = visitorsinfo.Result.VisitorEmailId; dictObj["visitornumberid"] = visitorsinfo.Result.VisitorNumberId; //var date = visitorsinfo.Result.lastupdateddate; var fullname = visitorsinfo.Result.FullName; var sql = "select userid from unibasecmn_users where username='" + fullname + ""; var select = new Unibase.Data.Sql.Select("unibasecmn_users").AllColumns().Where("username", fullname); var parameters = new List(); parameters.Add(new Unibase.Data.Parameter("@username", fullname)); var dt = await GetDataTableAsync(srequest, select, parameters); stageStatusName = "CheckIn"; var installedAppId = visitorsinfo.Result.Installedappid; var stage = await stageManager.GetStageByStageStatusAsync(srequest, installedAppId, stageStatusName); var NewStageId = stage.Result.StageId; DateTime date = DateTime.Now; var updateDate = new Dictionary(); updateDate.Add("employeeid", employeeId); updateDate.Add("checkindate", DateTime.Now); updateDate.Add("photourl", image); updateDate.Add("cityid", cityId); updateDate.Add("typeofvisitor", 1); updateDate.Add("stageid", NewStageId); updateDate.Add("agreement", agreement); updateDate.Add("purposeofvisit", purposeofvisit); updateDate.Add("lastupdateddate", DateTime.Now); var UpdateStage = new Update("bizgazecrm_visitors").Values(updateDate).Where(Exp.Eq("visitorid", visitorid)); // var UpdateStage = new Update("bizgazecrm_visitors").Value("stageid", NewStageId).Value("lastupdateddate", date).Value("checkindate", DateTime.Now).Where(Exp.Eq("visitorid", visitorid)); await _repository.ExecuteAsync(request, UpdateStage); } } else { return ActionResponse.CreateErrorResponse("1", "visitor Not Found"); } } //returnresponse = new FormActionResponse(); //returnresponse.Obj = dictObj as ExpandoObject; //returnresponse.PkValue = defaultPKValue; //return ActionResponse.CreateSuccessResponse("success", returnresponse); returnresponse = new FormActionResponse(); returnresponse.Obj = null; returnresponse.PkValue = 0; return ActionResponse.CreateSuccessResponse("success", returnresponse); } public List AppliedApps { get { return new List() { Bizgaze.CRM.Actions.UpdateVisitorBeenHere, }; } } } }