diff --git a/CRM.Visitors/ActionProviders/VisitorStageChangeAndUpDateContacts.cs b/CRM.Visitors/ActionProviders/VisitorStageChangeAndUpDateContacts.cs index f37b13d..933b9ee 100644 --- a/CRM.Visitors/ActionProviders/VisitorStageChangeAndUpDateContacts.cs +++ b/CRM.Visitors/ActionProviders/VisitorStageChangeAndUpDateContacts.cs @@ -16,6 +16,8 @@ using Unibase.Platform.Data; using Unibase.Platform.Forms.Providers; using Unibase.Platform.Keys; using Unibase.Platform.Series.Managers; +using System.Text.Json; +using iText.Layout.Element; namespace Bizgaze.CRM.Visitors.ActionProviders { @@ -73,13 +75,18 @@ namespace Bizgaze.CRM.Visitors.ActionProviders var connection = GetConnection(request); ExpandoObject obj1 = dictObj["RequestObj"]; var req = obj1 as IDictionary; + // var requestObj = dictObj["RequestObj"] as IDictionary; + // breakupTenureItems = Convert.ChangeType(requestObj["breakuptenure"].ToString(), typeof(object)).ToString(); + var mobileNumber = ""; var emailId = ""; var visitorName = ""; var photourl = ""; + var visitorInfo = docParameters.Find(x => x.DocType == "bizgazecrm_visitors"); if (visitorInfo != null) { + long installedAppId = 0; var stageStatusName = ""; var code = ""; @@ -91,252 +98,264 @@ namespace Bizgaze.CRM.Visitors.ActionProviders var dt1 = await GetDataTableAsync(srequest, sel1, param); var tenantid = Convert.ToInt32(dt1.Rows[0]["tenantid"]); var _SeriesId = Convert.ToInt64(visitorInfo.Parameters["seriesid"]); - // var visitorType = Convert.ToInt64(visitorInfo.Parameters["visitortype"]); - var typeofvisitor = Convert.ToInt64(visitorInfo.Parameters["typeofvisitor"]); - installedAppId = Convert.ToInt64(visitorInfo.Parameters["installedappid"]); - var visitordata = await visitorManager.GetVisitorByIdAsync(srequest, visitorIds); - var _seriesManager = Unibase.Dependency.DependencyConfig.Resolve(); - if (visitordata.Result != null) + var CapturePhotoObj = Convert.ChangeType(req["CapturePhoto1"].ToString(), typeof(object)).ToString(); + var deserializeJEntriesObj = JsonSerializer.Deserialize>(CapturePhotoObj); + for (var k = 0; k < deserializeJEntriesObj.Count; k++) { - if (typeofvisitor == 1) + var data1 = deserializeJEntriesObj[k]; + var CapturePhotoData = data1 as IDictionary; + var image = Convert.ChangeType(CapturePhotoData["image"].ToString(), typeof(string)).ToString(); + var visitorType = Convert.ToInt64(visitorInfo.Parameters["visitortype"]); + var typeofvisitor = Convert.ToInt64(visitorInfo.Parameters["typeofvisitor"]); + installedAppId = Convert.ToInt64(visitorInfo.Parameters["installedappid"]); + var visitordata = await visitorManager.GetVisitorByIdAsync(srequest, visitorIds); + var _seriesManager = Unibase.Dependency.DependencyConfig.Resolve(); + if (visitordata.Result != null) { - stageStatusName = "CheckIn"; - - //string[] Ocode = { }; - //Ocode.Append(code); - //string[] resultarray = Array.FindAll(Ocode, element => element == "-"); - //if (resultarray.Length > 1) - //{ - // if (_SeriesId != 0) - // { - // var SeriesCodeInfo = await _seriesManager.GenerateSeriesCodeForQueueAsync(request, _SeriesId, DateTime.Now); - // if (SeriesCodeInfo.Status == ResponseStatus.Error) - // { - // if (requestTrans.StartedLocal) await request.RollbackTransactionAsync(); - // return ActionResponse.CreateErrorResponse("1", SeriesCodeInfo.Message); - // } - // else - // { - // _code = SeriesCodeInfo.Result.SeriesCode; - // } - // } - - //} - //else - //{ - // _code = code; - //} - mobileNumber = visitordata.Result.MobileNumber; - emailId = visitordata.Result.EmailId; - visitorName = visitordata.Result.FullName; - photourl = visitordata.Result.PhotoUrl; - var stages = await stageManager.GetStageByStageStatusAsync(srequest, installedAppId, stageStatusName); - var NewStageIds = stages.Result.StageId; - var UpdateStages = new Update("bizgazecrm_visitors").Value("stageid", NewStageIds).Value("lastupdateddate", DateTime.Now).Where(Exp.Eq("visitorId", visitorIds)); - await _repository.ExecuteAsync(request, UpdateStages); - var visitorTypeid = visitordata.Result.VisitorType; - - var typeofvisitorid = visitordata.Result.TypeofVisitor; - var options1 = new EntityOptions() + if (typeofvisitor == 1) { - IsIdentity = true, - IsNewEntity = true, - TableName = "unibasecmn_users", - PkColumn = "userid", - IsExcludeFromAudit = false, - Id = 0, - }; - dynamic visitorparameters1 = new Dictionary(); - visitorparameters1.Add("username", visitorName); - visitorparameters1.Add("createdby", srequest.Identity.UserId); - visitorparameters1.Add("tenantid", tenantid); - visitorparameters1.Add("createddate", DateTime.Now); - visitorparameters1.Add("versionguid", Guid.NewGuid()); - visitorparameters1.Add("statusid", (int)RowStatus.Active); - visitorparameters1.Add("installedappid", installedAppId); - visitorparameters1.Add("phonenumber", mobileNumber); - visitorparameters1.Add("emailaddress", emailId); - var responses = await _repository.SaveAsync(request, options1, visitorparameters1); - if (responses.Status == ResponseStatus.Error) - { - if (requestTrans.StartedLocal) await request.RollbackTransactionAsync(); - return ActionResponse.CreateErrorResponse("1", "user Are Not Saved"); + stageStatusName = "CheckIn"; + + //string[] Ocode = { }; + //Ocode.Append(code); + //string[] resultarray = Array.FindAll(Ocode, element => element == "-"); + //if (resultarray.Length > 1) + //{ + // if (_SeriesId != 0) + // { + // var SeriesCodeInfo = await _seriesManager.GenerateSeriesCodeForQueueAsync(request, _SeriesId, DateTime.Now); + // if (SeriesCodeInfo.Status == ResponseStatus.Error) + // { + // if (requestTrans.StartedLocal) await request.RollbackTransactionAsync(); + // return ActionResponse.CreateErrorResponse("1", SeriesCodeInfo.Message); + // } + // else + // { + // _code = SeriesCodeInfo.Result.SeriesCode; + // } + // } + + //} + //else + //{ + // _code = code; + //} + mobileNumber = visitordata.Result.MobileNumber; + emailId = visitordata.Result.EmailId; + visitorName = visitordata.Result.FullName; + photourl = visitordata.Result.PhotoUrl; + var stages = await stageManager.GetStageByStageStatusAsync(srequest, installedAppId, stageStatusName); + var NewStageIds = stages.Result.StageId; + var UpdateStages = new Update("bizgazecrm_visitors").Value("photourl", image).Value("agreement", true).Value("stageid", NewStageIds).Value("lastupdateddate", DateTime.Now).Where(Exp.Eq("visitorId", visitorIds)); + await _repository.ExecuteAsync(request, UpdateStages); + var visitorTypeid = visitordata.Result.VisitorType; + + var typeofvisitorid = visitordata.Result.TypeofVisitor; + var options1 = new EntityOptions() + { + IsIdentity = true, + IsNewEntity = true, + TableName = "unibasecmn_users", + PkColumn = "userid", + IsExcludeFromAudit = false, + Id = 0, + }; + dynamic visitorparameters1 = new Dictionary(); + visitorparameters1.Add("username", visitorName); + visitorparameters1.Add("createdby", srequest.Identity.UserId); + visitorparameters1.Add("tenantid", tenantid); + visitorparameters1.Add("createddate", DateTime.Now); + visitorparameters1.Add("versionguid", Guid.NewGuid()); + visitorparameters1.Add("statusid", (int)RowStatus.Active); + visitorparameters1.Add("installedappid", installedAppId); + visitorparameters1.Add("phonenumber", mobileNumber); + visitorparameters1.Add("emailaddress", emailId); + var responses = await _repository.SaveAsync(request, options1, visitorparameters1); + if (responses.Status == ResponseStatus.Error) + { + if (requestTrans.StartedLocal) await request.RollbackTransactionAsync(); + return ActionResponse.CreateErrorResponse("1", "user Are Not Saved"); + } + else + { + using (var requestTrans1 = await request.BeginTransactionAsync()) + { + Int64 userid = 0; + { + var data = responses.Result as Dictionary; + userid = Convert.ToInt64(data["_Id"]); + } + var options = new EntityOptions() + { + IsIdentity = false, + IsNewEntity = true, + TableName = "bizgazecrm_contacts", + PkColumn = "contactid", + IsExcludeFromAudit = false, + Id = 0, + }; + dynamic contactparameters = new Dictionary(); + contactparameters.Add("contactid", userid); + contactparameters.Add("contactname", visitorName); + contactparameters.Add("createdby", srequest.Identity.UserId); + contactparameters.Add("createddate", DateTime.Now); + contactparameters.Add("versionguid", Guid.NewGuid()); + contactparameters.Add("statusid", (int)RowStatus.Active); + contactparameters.Add("installedappid", installedAppId); + var response = await _repository.SaveAsync(request, options, contactparameters); + if (response.Status == ResponseStatus.Error) + { + if (requestTrans.StartedLocal) await request.RollbackTransactionAsync(); + return ActionResponse.CreateErrorResponse("1", "Contacts Are Not Saved"); + } + var update = new Update("bizgazecrm_visitors").Value("contactid", userid).Value("code", code).Where(Exp.Eq("visitorid", visitorIds)); + await _repository.ExecuteAsync(request, update); + } + } + } else { - using (var requestTrans1 = await request.BeginTransactionAsync()) - { - Int64 userid = 0; - { - var data = responses.Result as Dictionary; - userid = Convert.ToInt64(data["_Id"]); - } - var options = new EntityOptions() - { - IsIdentity = false, - IsNewEntity = true, - TableName = "bizgazecrm_contacts", - PkColumn = "contactid", - IsExcludeFromAudit = false, - Id = 0, - }; - dynamic contactparameters = new Dictionary(); - contactparameters.Add("contactid", userid); - contactparameters.Add("contactname", visitorName); - contactparameters.Add("createdby", srequest.Identity.UserId); - contactparameters.Add("createddate", DateTime.Now); - contactparameters.Add("versionguid", Guid.NewGuid()); - contactparameters.Add("statusid", (int)RowStatus.Active); - contactparameters.Add("installedappid", installedAppId); - var response = await _repository.SaveAsync(request, options, contactparameters); - if (response.Status == ResponseStatus.Error) - { - if (requestTrans.StartedLocal) await request.RollbackTransactionAsync(); - return ActionResponse.CreateErrorResponse("1", "Contacts Are Not Saved"); - } - var update = new Update("bizgazecrm_visitors").Value("contactid", userid).Value("code", code).Where(Exp.Eq("visitorid", visitorIds)); - await _repository.ExecuteAsync(request, update); - } - } + var UpdateStages1 = new Update("bizgazecrm_visitors").Value("photourl", image).Value("agreement", true).Value("lastupdateddate", DateTime.Now).Where(Exp.Eq("visitorId", visitorIds)); + await _repository.ExecuteAsync(request, UpdateStages1); + + + var options2 = new EntityOptions() + { + IsIdentity = true, + IsNewEntity = true, + TableName = "unibasecmn_users", + PkColumn = "userid", + IsExcludeFromAudit = false, + Id = 0, + }; + dynamic visitorparameters2 = new Dictionary(); + visitorparameters2.Add("username", visitordata.Result.FullName); + visitorparameters2.Add("createdby", srequest.Identity.UserId); + visitorparameters2.Add("tenantid", tenantid); + visitorparameters2.Add("createddate", DateTime.Now); + visitorparameters2.Add("versionguid", Guid.NewGuid()); + visitorparameters2.Add("statusid", (int)RowStatus.Active); + visitorparameters2.Add("installedappid", installedAppId); + visitorparameters2.Add("phonenumber", visitordata.Result.MobileNumber); + visitorparameters2.Add("emailaddress", visitordata.Result.EmailId); + var responses = await _repository.SaveAsync(request, options2, visitorparameters2); + + if (responses.Status == ResponseStatus.Error) + { + if (requestTrans.StartedLocal) await request.RollbackTransactionAsync(); + return ActionResponse.CreateErrorResponse("1", "user Are Not Saved"); + } + else + { + using (var requestTrans1 = await request.BeginTransactionAsync()) + { + Int64 userid = 0; + { + var data = responses.Result as Dictionary; + userid = Convert.ToInt64(data["_Id"]); + } + var options1 = new EntityOptions() + { + IsIdentity = false, + IsNewEntity = true, + TableName = "bizgazecrm_contacts", + PkColumn = "contactid", + IsExcludeFromAudit = false, + Id = 0, + }; + dynamic contactparameters2 = new Dictionary(); + contactparameters2.Add("contactid", userid); + contactparameters2.Add("contactname", visitorName); + contactparameters2.Add("createdby", srequest.Identity.UserId); + contactparameters2.Add("createddate", DateTime.Now); + contactparameters2.Add("versionguid", Guid.NewGuid()); + contactparameters2.Add("statusid", (int)RowStatus.Active); + contactparameters2.Add("installedappid", installedAppId); + var response1 = await _repository.SaveAsync(request, options1, contactparameters2); + if (response1.Status == ResponseStatus.Error) + { + if (requestTrans.StartedLocal) await request.RollbackTransactionAsync(); + return ActionResponse.CreateErrorResponse("1", "Contacts Are Not Saved"); + } + var update = new Update("bizgazecrm_visitors").Value("contactid", userid).Value("code", code).Where(Exp.Eq("visitorid", visitorIds)); + await _repository.ExecuteAsync(request, update); + } + } + + var selectvis = new Unibase.Data.Sql.Select("bizgazecrm_visitors").Columns("versionguid").Where("visitorid", visitorIds); + var visparam = new List(); + param.Add(new Unibase.Data.Parameter("@visitorId", visitorIds)); + var datatable = await GetDataTableAsync(srequest, sel1, param); + string versionguid = string.Empty; + if (datatable != null) + { + versionguid = datatable.Rows[0]["versionguid"].ToString(); + } + + installedAppId = visitordata.Result.Installedappid; + stageStatusName = "Pre-Invite"; + var options = new EntityOptions() + { + IsIdentity = true, + IsNewEntity = false, + TableName = "bizgazecrm_visitors", + PkColumn = "visitorid", + IsExcludeFromAudit = false, + Id = defaultPKValue, + }; + var stage = await stageManager.GetStageByStageStatusAsync(srequest, installedAppId, stageStatusName); + var NewStageId = stage.Result.StageId; + dynamic contactparameters = new Dictionary(); + contactparameters.Add("stageid", NewStageId); + contactparameters.Add("versionguid", versionguid); + contactparameters.Add("lastupdateddate", DateTime.Now); + defaultPKValue = visitorIds; + var response = await _repository.SaveAsync(request, options, contactparameters); + + } } - else + var visitorInfos = await visitorManager.GetpreVisitorsAsync(srequest, code); + var visitorId = Convert.ToInt64(visitorInfos.Result.VisitorId); + var select = new Unibase.Data.Sql.Select("bizgazecrm_visitorcheckout").AllColumns().Where("visitorId", visitorId); + var parameters = new List(); + parameters.Add(new Unibase.Data.Parameter("@visitorId", visitorId)); + var dt = await GetDataTableAsync(srequest, select, parameters); + if (dt.Rows.Count == 0) { - var options2 = new EntityOptions() + var vistoroptions = new EntityOptions() { IsIdentity = true, IsNewEntity = true, - TableName = "unibasecmn_users", - PkColumn = "userid", + TableName = "bizgazecrm_visitorcheckout", + PkColumn = "visitorcheckoutid", IsExcludeFromAudit = false, Id = 0, }; - dynamic visitorparameters2 = new Dictionary(); - visitorparameters2.Add("username", visitordata.Result.FullName); - - visitorparameters2.Add("createdby", srequest.Identity.UserId); - visitorparameters2.Add("tenantid", tenantid); - visitorparameters2.Add("createddate", DateTime.Now); - visitorparameters2.Add("versionguid", Guid.NewGuid()); - visitorparameters2.Add("statusid", (int)RowStatus.Active); - visitorparameters2.Add("installedappid", installedAppId); - visitorparameters2.Add("phonenumber", visitordata.Result.MobileNumber); - visitorparameters2.Add("emailaddress", visitordata.Result.EmailId); - var responses = await _repository.SaveAsync(request, options2, visitorparameters2); - - if (responses.Status == ResponseStatus.Error) + dynamic visitor = new Dictionary(); + visitor.Add("createdby", srequest.Identity.UserId); + visitor.Add("checkindate", visitorInfos.Result.CheckInDate); + visitor.Add("tenantid", tenantid); + visitor.Add("comments", ""); + visitor.Add("checkoutdate", DateTime.MinValue); + visitor.Add("rating", 0); + visitor.Add("versionguid", Guid.NewGuid()); + visitor.Add("uniqueid", code); + visitor.Add("statusid", (int)RowStatus.Active); + visitor.Add("installedappid", visitorInfos.Result.Installedappid); + visitor.Add("lastupdateddate", DateTime.Now); + visitor.Add("visitorid", visitorId); + var response1 = await _repository.SaveAsync(request, vistoroptions, visitor); + if (response1.Status == ResponseStatus.Error) { if (requestTrans.StartedLocal) await request.RollbackTransactionAsync(); - return ActionResponse.CreateErrorResponse("1", "user Are Not Saved"); - } - else - { - using (var requestTrans1 = await request.BeginTransactionAsync()) - { - Int64 userid = 0; - { - var data = responses.Result as Dictionary; - userid = Convert.ToInt64(data["_Id"]); - } - var options1 = new EntityOptions() - { - IsIdentity = false, - IsNewEntity = true, - TableName = "bizgazecrm_contacts", - PkColumn = "contactid", - IsExcludeFromAudit = false, - Id = 0, - }; - dynamic contactparameters2 = new Dictionary(); - contactparameters2.Add("contactid", userid); - contactparameters2.Add("contactname", visitorName); - contactparameters2.Add("createdby", srequest.Identity.UserId); - contactparameters2.Add("createddate", DateTime.Now); - contactparameters2.Add("versionguid", Guid.NewGuid()); - contactparameters2.Add("statusid", (int)RowStatus.Active); - contactparameters2.Add("installedappid", installedAppId); - var response1 = await _repository.SaveAsync(request, options1, contactparameters2); - if (response1.Status == ResponseStatus.Error) - { - if (requestTrans.StartedLocal) await request.RollbackTransactionAsync(); - return ActionResponse.CreateErrorResponse("1", "Contacts Are Not Saved"); - } - var update = new Update("bizgazecrm_visitors").Value("contactid", userid).Value("code", code).Where(Exp.Eq("visitorid", visitorIds)); - await _repository.ExecuteAsync(request, update); - } + return ActionResponse.CreateErrorResponse("1", "Visitor Check Out Data Not Saved"); } - var selectvis = new Unibase.Data.Sql.Select("bizgazecrm_visitors").Columns("versionguid").Where("visitorid", visitorIds); - var visparam = new List(); - param.Add(new Unibase.Data.Parameter("@visitorId", visitorIds)); - var datatable = await GetDataTableAsync(srequest, sel1, param); - string versionguid = string.Empty; - if (datatable != null) - { - versionguid = datatable.Rows[0]["versionguid"].ToString(); - } - - installedAppId = visitordata.Result.Installedappid; - stageStatusName = "Pre-Invite"; - var options = new EntityOptions() - { - IsIdentity = true, - IsNewEntity = false, - TableName = "bizgazecrm_visitors", - PkColumn = "visitorid", - IsExcludeFromAudit = false, - Id = defaultPKValue, - }; - var stage = await stageManager.GetStageByStageStatusAsync(srequest, installedAppId, stageStatusName); - var NewStageId = stage.Result.StageId; - dynamic contactparameters = new Dictionary(); - contactparameters.Add("stageid", NewStageId); - contactparameters.Add("versionguid", versionguid); - contactparameters.Add("lastupdateddate", DateTime.Now); - defaultPKValue = visitorIds; - var response = await _repository.SaveAsync(request, options, contactparameters); - - } - } - var visitorInfos = await visitorManager.GetpreVisitorsAsync(srequest, code); - var visitorId = Convert.ToInt64(visitorInfos.Result.VisitorId); - var select = new Unibase.Data.Sql.Select("bizgazecrm_visitorcheckout").AllColumns().Where("visitorId", visitorId); - var parameters = new List(); - parameters.Add(new Unibase.Data.Parameter("@visitorId", visitorId)); - var dt = await GetDataTableAsync(srequest, select, parameters); - if (dt.Rows.Count == 0) - { - var vistoroptions = new EntityOptions() - { - IsIdentity = true, - IsNewEntity = true, - TableName = "bizgazecrm_visitorcheckout", - PkColumn = "visitorcheckoutid", - IsExcludeFromAudit = false, - Id = 0, - }; - dynamic visitor = new Dictionary(); - visitor.Add("createdby", srequest.Identity.UserId); - visitor.Add("checkindate", visitorInfos.Result.CheckInDate); - visitor.Add("tenantid", tenantid); - visitor.Add("comments", ""); - visitor.Add("checkoutdate", DateTime.MinValue); - visitor.Add("rating", 0); - visitor.Add("versionguid", Guid.NewGuid()); - visitor.Add("uniqueid", code); - visitor.Add("statusid", (int)RowStatus.Active); - visitor.Add("installedappid", visitorInfos.Result.Installedappid); - visitor.Add("lastupdateddate", DateTime.Now); - visitor.Add("visitorid", visitorId); - var response1 = await _repository.SaveAsync(request, vistoroptions, visitor); - if (response1.Status == ResponseStatus.Error) - { - if (requestTrans.StartedLocal) await request.RollbackTransactionAsync(); - return ActionResponse.CreateErrorResponse("1", "Visitor Check Out Data Not Saved"); } } - } var returnresponse = new FormActionResponse(); returnresponse.Obj = dictObj as ExpandoObject;