5
0

VisitorStageChangeAndUpDateContacts.cs Changes

Cette révision appartient à :
2023-08-10 17:50:28 +05:30
Parent 25514df620
révision a0d4241c38
+243 -224
Voir le fichier
@@ -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<string, object>;
// var requestObj = dictObj["RequestObj"] as IDictionary<string, object>;
// 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<Unibase.Platform.Series.Managers.ISeriesManager>();
if (visitordata.Result != null)
var CapturePhotoObj = Convert.ChangeType(req["CapturePhoto1"].ToString(), typeof(object)).ToString();
var deserializeJEntriesObj = JsonSerializer.Deserialize<List<ExpandoObject>>(CapturePhotoObj);
for (var k = 0; k < deserializeJEntriesObj.Count; k++)
{
if (typeofvisitor == 1)
var data1 = deserializeJEntriesObj[k];
var CapturePhotoData = data1 as IDictionary<string, dynamic>;
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<Unibase.Platform.Series.Managers.ISeriesManager>();
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<FormActionResponse>.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<string, object>();
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<FormActionResponse>.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<FormActionResponse>.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<string, object>();
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<FormActionResponse>.CreateErrorResponse("1", "user Are Not Saved");
}
else
{
using (var requestTrans1 = await request.BeginTransactionAsync())
{
Int64 userid = 0;
{
var data = responses.Result as Dictionary<string, object>;
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<string, object>();
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<FormActionResponse>.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<string, object>;
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<string, object>();
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<FormActionResponse>.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<string, object>();
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<FormActionResponse>.CreateErrorResponse("1", "user Are Not Saved");
}
else
{
using (var requestTrans1 = await request.BeginTransactionAsync())
{
Int64 userid = 0;
{
var data = responses.Result as Dictionary<string, object>;
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<string, object>();
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<FormActionResponse>.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<Unibase.Data.Parameter>();
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<string, object>();
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<Unibase.Data.Parameter>();
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<string, object>();
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<string, object>();
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<FormActionResponse>.CreateErrorResponse("1", "user Are Not Saved");
}
else
{
using (var requestTrans1 = await request.BeginTransactionAsync())
{
Int64 userid = 0;
{
var data = responses.Result as Dictionary<string, object>;
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<string, object>();
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<FormActionResponse>.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<FormActionResponse>.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<Unibase.Data.Parameter>();
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<string, object>();
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<Unibase.Data.Parameter>();
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<string, object>();
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<FormActionResponse>.CreateErrorResponse("1", "Visitor Check Out Data Not Saved");
}
}
}
var returnresponse = new FormActionResponse();
returnresponse.Obj = dictObj as ExpandoObject;