Recovery Data Completed
This commit is contained in:
@@ -20,6 +20,7 @@ public interface IInsuranceJobRepositpry:IRepository<long, InsuranceJob>
|
|||||||
OperationResult CreateInsuranceJob(CreateInsuranceJob command);
|
OperationResult CreateInsuranceJob(CreateInsuranceJob command);
|
||||||
List<(long id, string date)> GetOldYersInsuranceItemIds();
|
List<(long id, string date)> GetOldYersInsuranceItemIds();
|
||||||
OperationResult CopyFromLastYear(CopyFromLastYearViewModel command);
|
OperationResult CopyFromLastYear(CopyFromLastYearViewModel command);
|
||||||
|
OperationResult RecoveryOldData1403();
|
||||||
OperationResult Remove(long id);
|
OperationResult Remove(long id);
|
||||||
OperationResult EditInsuranceJob(EditInsuranceJob command);
|
OperationResult EditInsuranceJob(EditInsuranceJob command);
|
||||||
|
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ public interface IInsuranceJobItemRepositpry : IRepository<long, InsuranceJobIte
|
|||||||
DetailsInsuranceJobItem GetDetails(long id);
|
DetailsInsuranceJobItem GetDetails(long id);
|
||||||
List<InsuranceJobItemViewModel> GetInsuranceJobItemByInsuranceJobId(long Id, string year, string month);
|
List<InsuranceJobItemViewModel> GetInsuranceJobItemByInsuranceJobId(long Id, string year, string month);
|
||||||
List<InsuranceJobItemViewModel> Search(InsuranceJobItemSearchModel searchModel);
|
List<InsuranceJobItemViewModel> Search(InsuranceJobItemSearchModel searchModel);
|
||||||
InsuranceJobItemViewModel GetInsuranceJobItemByInsuranceJobIdForFixedSalary(long insuranceJobId, long jobId);
|
InsuranceJobItemViewModel GetInsuranceJobItemByInsuranceJobIdForFixedSalary(long insuranceJobId, long jobId,
|
||||||
|
string year, string month);
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -12,6 +12,7 @@ public interface IInsuranceJobApplication
|
|||||||
{
|
{
|
||||||
List<(long id, string date)> GetOldYersInsuranceItemIds();
|
List<(long id, string date)> GetOldYersInsuranceItemIds();
|
||||||
OperationResult CopyFromLastYear(CopyFromLastYearViewModel command);
|
OperationResult CopyFromLastYear(CopyFromLastYearViewModel command);
|
||||||
|
OperationResult RecoveryOldData1403();
|
||||||
OperationResult Create(CreateInsuranceJob command);
|
OperationResult Create(CreateInsuranceJob command);
|
||||||
OperationResult Edit(EditInsuranceJob command);
|
OperationResult Edit(EditInsuranceJob command);
|
||||||
EditInsuranceJob GetDetails(long id,string year, string month);
|
EditInsuranceJob GetDetails(long id,string year, string month);
|
||||||
|
|||||||
@@ -29,6 +29,11 @@ public class InsuranceJobApplication: IInsuranceJobApplication
|
|||||||
return _insuranceJobRepositpry.CopyFromLastYear(command);
|
return _insuranceJobRepositpry.CopyFromLastYear(command);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public OperationResult RecoveryOldData1403()
|
||||||
|
{
|
||||||
|
return _insuranceJobRepositpry.RecoveryOldData1403();
|
||||||
|
}
|
||||||
|
|
||||||
public OperationResult Create(CreateInsuranceJob command)
|
public OperationResult Create(CreateInsuranceJob command)
|
||||||
{
|
{
|
||||||
var opration = new OperationResult();
|
var opration = new OperationResult();
|
||||||
|
|||||||
@@ -1718,7 +1718,7 @@ public class InsuranceListApplication: IInsuranceListApplication
|
|||||||
|
|
||||||
var searchModel = new InsuranceJobItemSearchModel();
|
var searchModel = new InsuranceJobItemSearchModel();
|
||||||
searchModel.InsuranceJobId = (long)insuranceJobId;
|
searchModel.InsuranceJobId = (long)insuranceJobId;
|
||||||
var JobItem = _insuranceJobItemRepository.GetInsuranceJobItemByInsuranceJobIdForFixedSalary((long)insuranceJobId, jobId);
|
var JobItem = _insuranceJobItemRepository.GetInsuranceJobItemByInsuranceJobIdForFixedSalary((long)insuranceJobId, jobId, year, month);
|
||||||
|
|
||||||
if (JobItem != null && JobItem.Id != 0)
|
if (JobItem != null && JobItem.Id != 0)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -124,10 +124,11 @@ public class InsuranceJobItemRepository : RepositoryBase<long, InsuranceJobItem>
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public InsuranceJobItemViewModel GetInsuranceJobItemByInsuranceJobIdForFixedSalary(long insuranceJobId, long jobId)
|
public InsuranceJobItemViewModel GetInsuranceJobItemByInsuranceJobIdForFixedSalary(long insuranceJobId, long jobId, string year, string month)
|
||||||
{
|
{
|
||||||
|
var searcheDate = ($"{year}/{month}/01").ToGeorgianDateTime();
|
||||||
var insuranceJobItemViewModel = new InsuranceJobItemViewModel();
|
var insuranceJobItemViewModel = new InsuranceJobItemViewModel();
|
||||||
var insuranceJobItems = _context.InsuranceJobItems.Where(x => x.InsuranceJobId == insuranceJobId).ToList();
|
var insuranceJobItems = _context.InsuranceJobItems.Where(i => i.InsuranceJobId == insuranceJobId && i.StartDate <= searcheDate && i.EndDate >= searcheDate).ToList();
|
||||||
var insuranceJobItemIds = insuranceJobItems.Select(x => x.id).ToList();
|
var insuranceJobItemIds = insuranceJobItems.Select(x => x.id).ToList();
|
||||||
var jobAndJob = _context.InsuranceJobAndJobsSet
|
var jobAndJob = _context.InsuranceJobAndJobsSet
|
||||||
.Where(x => insuranceJobItemIds.Contains(x.InsuranceJobItemId) && x.JobId == jobId).FirstOrDefault();
|
.Where(x => insuranceJobItemIds.Contains(x.InsuranceJobItemId) && x.JobId == jobId).FirstOrDefault();
|
||||||
|
|||||||
@@ -20,13 +20,15 @@ namespace CompanyManagment.EFCore.Repository;
|
|||||||
public class InsuranceJobRepository : RepositoryBase<long, InsuranceJob>, IInsuranceJobRepositpry
|
public class InsuranceJobRepository : RepositoryBase<long, InsuranceJob>, IInsuranceJobRepositpry
|
||||||
{
|
{
|
||||||
private readonly CompanyContext _context;
|
private readonly CompanyContext _context;
|
||||||
|
private readonly TestDbContext _testDbContext;
|
||||||
private readonly IInsuranceJobItemRepositpry _insuranceJobItemRepositpry;
|
private readonly IInsuranceJobItemRepositpry _insuranceJobItemRepositpry;
|
||||||
private readonly IPercentageRepository _percentageRepository;
|
private readonly IPercentageRepository _percentageRepository;
|
||||||
public InsuranceJobRepository(CompanyContext context, IInsuranceJobItemRepositpry insuranceJobItemRepositpry, IPercentageRepository percentageRepository) : base(context)
|
public InsuranceJobRepository(CompanyContext context, IInsuranceJobItemRepositpry insuranceJobItemRepositpry, IPercentageRepository percentageRepository, TestDbContext testDbContext) : base(context)
|
||||||
{
|
{
|
||||||
_context = context;
|
_context = context;
|
||||||
_insuranceJobItemRepositpry = insuranceJobItemRepositpry;
|
_insuranceJobItemRepositpry = insuranceJobItemRepositpry;
|
||||||
_percentageRepository = percentageRepository;
|
_percentageRepository = percentageRepository;
|
||||||
|
_testDbContext = testDbContext;
|
||||||
}
|
}
|
||||||
|
|
||||||
public EditInsuranceJob GetDetails(long id, string year, string month)
|
public EditInsuranceJob GetDetails(long id, string year, string month)
|
||||||
@@ -274,6 +276,65 @@ public class InsuranceJobRepository : RepositoryBase<long, InsuranceJob>, IInsur
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public OperationResult RecoveryOldData1403()
|
||||||
|
{
|
||||||
|
|
||||||
|
OperationResult result = new OperationResult();
|
||||||
|
using (var transaction = _context.Database.BeginTransaction())
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var res = _testDbContext.InsuranceJobItems.Include(x => x.InsuranceJobAndJobs).ToList();
|
||||||
|
foreach (var item in res)
|
||||||
|
{
|
||||||
|
var createItem = new InsuranceJobItem(item.PercentageLessThan, 0, item.PercentageMoreThan, 0,
|
||||||
|
item.InsuranceJobId, item.StartDate, item.EndDate);
|
||||||
|
_context.InsuranceJobItems.Add(createItem);
|
||||||
|
_context.SaveChanges();
|
||||||
|
|
||||||
|
List<InsuranceJobAndJobs> insuranceJobAndJobsList = new List<InsuranceJobAndJobs>();
|
||||||
|
foreach (var jobItem in item.InsuranceJobAndJobs)
|
||||||
|
{
|
||||||
|
var insuranceJobAndJobsObj = new InsuranceJobAndJobs();
|
||||||
|
insuranceJobAndJobsObj.JobId = jobItem.JobId;
|
||||||
|
insuranceJobAndJobsObj.InsuranceJobItemId = createItem.id;
|
||||||
|
insuranceJobAndJobsList.Add(insuranceJobAndJobsObj);
|
||||||
|
}
|
||||||
|
_context.InsuranceJobAndJobsSet.AddRange(insuranceJobAndJobsList);
|
||||||
|
_context.SaveChanges();
|
||||||
|
|
||||||
|
|
||||||
|
if (!_percentageRepository.Exists(x => x.Percent == item.PercentageLessThan))
|
||||||
|
{
|
||||||
|
var percentage = new Percentage(item.PercentageLessThan);
|
||||||
|
_percentageRepository.Create(percentage);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!_percentageRepository.Exists(x => x.Percent == item.PercentageMoreThan))
|
||||||
|
{
|
||||||
|
var percentage2 = new Percentage(item.PercentageMoreThan);
|
||||||
|
_percentageRepository.Create(percentage2);
|
||||||
|
}
|
||||||
|
|
||||||
|
_percentageRepository.SaveChanges();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
transaction.Commit();
|
||||||
|
result.IsSuccedded = true;
|
||||||
|
result.Message = "حذف اطلاعات با موفقیت انجام شد";
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
transaction.Rollback();
|
||||||
|
result.Failed("ثبت اطلاعات با خطا مواجه شد");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
public OperationResult Remove(long id)
|
public OperationResult Remove(long id)
|
||||||
{
|
{
|
||||||
OperationResult result = new OperationResult();
|
OperationResult result = new OperationResult();
|
||||||
|
|||||||
39
CompanyManagment.EFCore/TestDbContext.cs
Normal file
39
CompanyManagment.EFCore/TestDbContext.cs
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
using Company.Domain.InsuranceJobItemAgg;
|
||||||
|
using Company.Domain.InsurancJobAgg;
|
||||||
|
using Company.Domain.RollCallAgg;
|
||||||
|
using CompanyManagment.EFCore.Mapping;
|
||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace CompanyManagment.EFCore
|
||||||
|
{
|
||||||
|
public class TestDbContext : DbContext
|
||||||
|
{
|
||||||
|
public DbSet<InsuranceJobItem> InsuranceJobItems { get; set; }
|
||||||
|
public DbSet<InsuranceJob> InsuranceJobs { get; set; }
|
||||||
|
|
||||||
|
public TestDbContext(DbContextOptions<TestDbContext> options) : base(options)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public TestDbContext()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
protected override void OnModelCreating(ModelBuilder modelBuilder)
|
||||||
|
{
|
||||||
|
var assembly = typeof(PersonalContractingpartyMapping).Assembly;
|
||||||
|
modelBuilder.ApplyConfigurationsFromAssembly(assembly);
|
||||||
|
base.OnModelCreating(modelBuilder);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
21
PersonalContractingParty.Config/TestDbBootStrapper.cs
Normal file
21
PersonalContractingParty.Config/TestDbBootStrapper.cs
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
using Company.Domain.InsuranceJobItemAgg;
|
||||||
|
using Company.Domain.InsurancJobAgg;
|
||||||
|
using CompanyManagment.App.Contracts.InsuranceJob;
|
||||||
|
using CompanyManagment.Application;
|
||||||
|
using CompanyManagment.EFCore;
|
||||||
|
using CompanyManagment.EFCore.Repository;
|
||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
|
|
||||||
|
namespace PersonalContractingParty.Config;
|
||||||
|
|
||||||
|
public class TestDbBootStrapper
|
||||||
|
{
|
||||||
|
public static void Configure(IServiceCollection services, string connectionString)
|
||||||
|
{
|
||||||
|
services.AddTransient<IInsuranceJobApplication, InsuranceJobApplication>();
|
||||||
|
services.AddTransient<IInsuranceJobRepositpry, InsuranceJobRepository>();
|
||||||
|
services.AddTransient<IInsuranceJobItemRepositpry, InsuranceJobItemRepository>();
|
||||||
|
services.AddDbContext<TestDbContext>(x => x.UseSqlServer(connectionString));
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -10,11 +10,20 @@
|
|||||||
@*<a href="#showmodal=@Url.Page("/Company/InsuranceJob/Index","CreateInformation")" class="btn btn-rounded waves-effect waves-light m-b-5 btn-show-modal"><i class="fa fa-user-plus" ></i> ثبت اطلاعات مقطوع </a>*@
|
@*<a href="#showmodal=@Url.Page("/Company/InsuranceJob/Index","CreateInformation")" class="btn btn-rounded waves-effect waves-light m-b-5 btn-show-modal"><i class="fa fa-user-plus" ></i> ثبت اطلاعات مقطوع </a>*@
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p class="pull-right">
|
<p class="pull-right">
|
||||||
|
|
||||||
<a href="#showmodal=@Url.Page("/Company/InsuranceJob/Index", "CopyFromLastYear")" class="btn btn-rounded waves-effect waves-light m-b-5 btn-show-modal"><i class="fa fa-user-plus"></i> کپی از اصناف سال قبل </a>
|
<a href="#showmodal=@Url.Page("/Company/InsuranceJob/Index", "CopyFromLastYear")" class="btn btn-rounded waves-effect waves-light m-b-5 btn-show-modal"><i class="fa fa-user-plus"></i> کپی از اصناف سال قبل </a>
|
||||||
@*<a href="#showmodal=@Url.Page("/Company/InsuranceJob/Index","CreateInformation")" class="btn btn-rounded waves-effect waves-light m-b-5 btn-show-modal"><i class="fa fa-user-plus" ></i> ثبت اطلاعات مقطوع </a>*@
|
@*<a href="#showmodal=@Url.Page("/Company/InsuranceJob/Index","CreateInformation")" class="btn btn-rounded waves-effect waves-light m-b-5 btn-show-modal"><i class="fa fa-user-plus" ></i> ثبت اطلاعات مقطوع </a>*@
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
<p class="pull-right">
|
||||||
|
|
||||||
|
<a asp-page="/Company/InsuranceJob/Index" asp-page-handler="OldDataRecovery1403" class="btn btn-rounded waves-effect waves-light m-b-5 btn-show-modal"><i class="fa fa-user-plus"></i> ریکاوری دیتای سال 1403 </a>
|
||||||
|
@*<a href="#showmodal=@Url.Page("/Company/InsuranceJob/Index","CreateInformation")" class="btn btn-rounded waves-effect waves-light m-b-5 btn-show-modal"><i class="fa fa-user-plus" ></i> ثبت اطلاعات مقطوع </a>*@
|
||||||
|
</p>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div class="col-sm-12">
|
<div class="col-sm-12">
|
||||||
<div class="panel-group panel-group-joined" id="accordion-test">
|
<div class="panel-group panel-group-joined" id="accordion-test">
|
||||||
|
|||||||
@@ -82,17 +82,23 @@ public class IndexModel : PageModel
|
|||||||
return new JsonResult(res);
|
return new JsonResult(res);
|
||||||
}
|
}
|
||||||
|
|
||||||
//public async Task<IActionResult> OnPostJobListByText(string textSearch)
|
public IActionResult OnGetOldDataRecovery1403()
|
||||||
//{
|
{
|
||||||
// var jobs = _jobApplication.GetJobListByText(textSearch);
|
var res = _insuranceJobApplication.RecoveryOldData1403();
|
||||||
// return new JsonResult(new
|
|
||||||
// {
|
|
||||||
// IsSuccedded = true,
|
|
||||||
// mylist = jobs,
|
|
||||||
// });
|
|
||||||
//}
|
|
||||||
|
|
||||||
public IActionResult OnPostJobListByText(string textSearch)
|
return new JsonResult(res);
|
||||||
|
}
|
||||||
|
//public async Task<IActionResult> OnPostJobListByText(string textSearch)
|
||||||
|
//{
|
||||||
|
// var jobs = _jobApplication.GetJobListByText(textSearch);
|
||||||
|
// return new JsonResult(new
|
||||||
|
// {
|
||||||
|
// IsSuccedded = true,
|
||||||
|
// mylist = jobs,
|
||||||
|
// });
|
||||||
|
//}
|
||||||
|
|
||||||
|
public IActionResult OnPostJobListByText(string textSearch)
|
||||||
{
|
{
|
||||||
var jobs = _jobApplication.GetJobListByText(textSearch);
|
var jobs = _jobApplication.GetJobListByText(textSearch);
|
||||||
|
|
||||||
|
|||||||
@@ -65,20 +65,20 @@ public class IndexModel : PageModel
|
|||||||
|
|
||||||
var searchModelPercentage = new PercentageSearchModel();
|
var searchModelPercentage = new PercentageSearchModel();
|
||||||
var percentageList = _percentageApplication.Search(searchModelPercentage);
|
var percentageList = _percentageApplication.Search(searchModelPercentage);
|
||||||
var percentagIds = dateSalaryItems.Select(x => x.PercentageId).ToList();
|
//var percentagIds = dateSalaryItems.Select(x => x.PercentageId).ToList();
|
||||||
var percentages = percentageList.Where(x => !percentagIds.Contains(x.Id)).ToList();
|
//var percentages = percentageList.Where(x => !percentagIds.Contains(x.Id)).ToList();
|
||||||
|
|
||||||
foreach (var item in percentages)
|
//foreach (var item in percentages)
|
||||||
{
|
//{
|
||||||
var obj = new DateSalaryItemViewModel();
|
// var obj = new DateSalaryItemViewModel();
|
||||||
obj.Percent = item.Percent;
|
// obj.Percent = item.Percent;
|
||||||
obj.PercentageId = item.Id;
|
// obj.PercentageId = item.Id;
|
||||||
obj.Salary = null;
|
// obj.Salary = null;
|
||||||
obj.DateSalaryId = id;
|
// obj.DateSalaryId = id;
|
||||||
obj.Id = 0;
|
// obj.Id = 0;
|
||||||
obj.StrSalary = "";
|
// obj.StrSalary = "";
|
||||||
dateSalaryItems.Add(obj);
|
// dateSalaryItems.Add(obj);
|
||||||
}
|
//}
|
||||||
|
|
||||||
var list = new CreateDateSalaryForInsuranceJob();
|
var list = new CreateDateSalaryForInsuranceJob();
|
||||||
list.EndDateFa = dateSalary.EndDateFa;
|
list.EndDateFa = dateSalary.EndDateFa;
|
||||||
|
|||||||
@@ -34,7 +34,9 @@ builder.Services.AddRazorPages()
|
|||||||
builder.Services.AddHttpContextAccessor();
|
builder.Services.AddHttpContextAccessor();
|
||||||
builder.Services.AddHttpClient("holidayApi", c => c.BaseAddress = new System.Uri("https://api.github.com"));
|
builder.Services.AddHttpClient("holidayApi", c => c.BaseAddress = new System.Uri("https://api.github.com"));
|
||||||
var connectionString = builder.Configuration.GetConnectionString("MesbahDb");
|
var connectionString = builder.Configuration.GetConnectionString("MesbahDb");
|
||||||
|
var connectionStringTestDb = builder.Configuration.GetConnectionString("TestDb");
|
||||||
PersonalBootstrapper.Configure(builder.Services, connectionString);
|
PersonalBootstrapper.Configure(builder.Services, connectionString);
|
||||||
|
TestDbBootStrapper.Configure(builder.Services, connectionStringTestDb);
|
||||||
AccountManagementBootstrapper.Configure(builder.Services, connectionString);
|
AccountManagementBootstrapper.Configure(builder.Services, connectionString);
|
||||||
WorkFlowBootstrapper.Configure(builder.Services, connectionString);
|
WorkFlowBootstrapper.Configure(builder.Services, connectionString);
|
||||||
QueryBootstrapper.Configure(builder.Services);
|
QueryBootstrapper.Configure(builder.Services);
|
||||||
|
|||||||
@@ -15,11 +15,14 @@
|
|||||||
//"MesbahDb": "Data Source=171.22.24.15;Initial Catalog=mesbah_db;Persist Security Info=False;User ID=ir_db;Password=R2rNp[170]is[3019]#@ATt;TrustServerCertificate=true;"
|
//"MesbahDb": "Data Source=171.22.24.15;Initial Catalog=mesbah_db;Persist Security Info=False;User ID=ir_db;Password=R2rNp[170]is[3019]#@ATt;TrustServerCertificate=true;"
|
||||||
|
|
||||||
//local
|
//local
|
||||||
"MesbahDb": "Data Source=.;Initial Catalog=mesbah_db;Integrated Security=True;TrustServerCertificate=true;"
|
"MesbahDb": "Data Source=.;Initial Catalog=mesbah_db;Integrated Security=True;TrustServerCertificate=true;",
|
||||||
|
|
||||||
|
"TestDb": "Data Source=.;Initial Catalog=TestDb;Integrated Security=True;TrustServerCertificate=true;"
|
||||||
|
|
||||||
//mahan Docker
|
//mahan Docker
|
||||||
//"MesbahDb": "Data Source=localhost,5069;Initial Catalog=mesbah_db;User ID=sa;Password=YourPassword123;TrustServerCertificate=True;"
|
//"MesbahDb": "Data Source=localhost,5069;Initial Catalog=mesbah_db;User ID=sa;Password=YourPassword123;TrustServerCertificate=True;"
|
||||||
},
|
},
|
||||||
|
|
||||||
"GoogleRecaptchaV3": {
|
"GoogleRecaptchaV3": {
|
||||||
"SiteKey": "6Lfhp_AnAAAAAB79WkrMoHd1k8ir4m8VvfjE7FTH",
|
"SiteKey": "6Lfhp_AnAAAAAB79WkrMoHd1k8ir4m8VvfjE7FTH",
|
||||||
"SecretKey": "6Lfhp_AnAAAAANjDDY6DPrbbUQS7k6ZCRmrVP5Lb"
|
"SecretKey": "6Lfhp_AnAAAAANjDDY6DPrbbUQS7k6ZCRmrVP5Lb"
|
||||||
|
|||||||
Reference in New Issue
Block a user