Commit 095fd6e0 authored by Jason's avatar Jason

edit mask尚未完成

parent 94a484f6
......@@ -530,6 +530,7 @@ namespace backstage.Controllers
{ "field_id", field_id },
};
#region list mask
var url = _config["IP"] + "/v2/vault/get";
var httpMethod = HttpMethod.Post;
// 取得使用者的 "token" Claim 值
......@@ -585,6 +586,7 @@ namespace backstage.Controllers
}
}
#endregion
return RedirectToAction("ListFields", queryString);
}
......@@ -693,27 +695,24 @@ namespace backstage.Controllers
}
//新增MASK
//新增MASK ajax
[HttpPost]
public async Task<IActionResult> CreateMask(Mask mask, int merchant_id, int vault_id, int field_id)
public async Task<ResultModel> CreateMask(IFormCollection form)
{
// 構建包含參數的查詢字串
var queryString = new RouteValueDictionary {
{ "Merchant_id", merchant_id },
{ "vault_id", vault_id },
{ "field_id", field_id }
};
var result = new ResultModel();
try
{
var url = _config["IP"] + "/v2/vault";
if (string.IsNullOrEmpty(mask.name))
if (string.IsNullOrEmpty(form["name"]))
{
TempData["IsSuccess"] = false;
TempData["msg"] = "名稱不能為空";
return RedirectToAction("ListFields", queryString);
result.IsSuccess = false;
result.Message = "名稱不能為空";
return result;
}
......@@ -722,32 +721,130 @@ namespace backstage.Controllers
string token = User.FindFirstValue("token");
var setting = new
{
mask=mask.mask,
size_init=mask.size_init,
size_end=mask.size_end
mask = Convert.ToInt32(form["mask"]),
size_init = Convert.ToInt32(form["size_init"]),
size_end = Convert.ToInt32(form["size_end"])
};
var fieldData = new[]
{
new
new
{
action = "ADD",
field_id=Convert.ToInt32(form["field_id"]),
name=form["name"].ToString(),
type = Convert.ToInt32(form["type"]),
setting = System.Text.Json.JsonSerializer.Serialize(setting)
}
};
string namstext = form["name"];
var parameters = new Dictionary<string, string>
{
{ "Merchant_id",form["merchant_id"] },
{ "info","MASKS"},
{ "id", form["vault_id"]},
{ "data",JsonConvert.SerializeObject(fieldData)}
};
var apiResult = await _callApi.CallAPI(url, parameters, httpMethod);
if (apiResult.IsSuccess)
{
var Response = JsonConvert.DeserializeObject<Response>(apiResult.Data.ToString());
if (Response.r == 0)
{
action = "ADD",
field_id,
mask.name,
type = mask.type,
setting = setting
if (Response.failInfo == null)
{
result.IsSuccess = true;
result.Message = "Create success";
return result;
}
result.IsSuccess = false;
result.Message = System.Text.RegularExpressions.Regex.Unescape(string.Join(", ", Response.failInfo));
return result;
}
else
{
result.IsSuccess = false;
result.Message = Response.m.ToString();
return result;
}
}
}
catch (Exception e)
{
result.IsSuccess = false;
result.Message = e.Message + e.InnerException?.Message;
return result;
}
result.IsSuccess = false;
result.Message = "Create fail.";
return result;
//return View();
}
//刪除MASK ajx
[HttpPost]
public async Task<ResultModel> DeleteMask(IFormCollection form)
{
var result = new ResultModel();
try
{
var url = _config["IP"] + "/v2/vault";
if (string.IsNullOrEmpty(form["name"]))
{
result.IsSuccess = false;
result.Message = "名稱不能為空";
return result;
}
var httpMethod = HttpMethod.Post;
// 取得使用者的 "token" Claim 值
string token = User.FindFirstValue("token");
var setting = new
{
mask = Convert.ToInt32(form["mask"]),
size_init = Convert.ToInt32(form["size_init"]),
size_end = Convert.ToInt32(form["size_end"])
};
var fieldData = new[]
{
new
{
action = "MOD",
id=Convert.ToInt32(form["mask_id"]),
name=form["name"].ToString(),
type = Convert.ToInt32(form["type"]),
setting = System.Text.Json.JsonSerializer.Serialize(setting)
}
};
string namstext = form["name"];
var parameters = new Dictionary<string, string>
{
{ "Merchant_id", merchant_id.ToString() },
{ "info","MASKS"},
{ "id", vault_id.ToString() },
{
{ "Merchant_id",form["merchant_id"] },
{ "info","MASKS"},
{ "id", form["vault_id"]},
{ "data",JsonConvert.SerializeObject(fieldData)}
};
};
var apiResult = await _callApi.CallAPI(url, parameters, httpMethod);
if (apiResult.IsSuccess)
{
......@@ -756,24 +853,23 @@ namespace backstage.Controllers
{
if (Response.failInfo == null)
{
TempData["IsSuccess"] = true;
TempData["msg"] = "Create success";
return RedirectToAction("ListMasks", queryString);
result.IsSuccess = true;
result.Message = "Create success";
return result;
}
TempData["IsSuccess"] = false;
TempData["msg"] = System.Text.RegularExpressions.Regex.Unescape(string.Join(", ", Response.failInfo));
return RedirectToAction("ListMasks", queryString);
result.IsSuccess = false;
result.Message = System.Text.RegularExpressions.Regex.Unescape(string.Join(", ", Response.failInfo));
return result;
}
else
{
TempData["IsSuccess"] = false;
TempData["msg"] = apiResult.Message;
result.IsSuccess = false;
result.Message = Response.m.ToString();
return RedirectToAction("ListMasks", queryString);
return result;
}
......@@ -783,15 +879,153 @@ namespace backstage.Controllers
catch (Exception e)
{
TempData["IsSuccess"] = false;
TempData["msg"] = e.Message + e.InnerException?.Message;
return RedirectToAction("ListMasks", queryString);
result.IsSuccess = false;
result.Message = e.Message + e.InnerException?.Message;
return result;
}
TempData["IsSuccess"] = false;
TempData["msg"] = "Create fail.";
return RedirectToAction("ListMasks", queryString);
result.IsSuccess = false;
result.Message = "Create fail.";
return result;
}
//編輯MASK ajax
[HttpPost]
public async Task<ResultModel> EditMask(IFormCollection form)
{
var result = new ResultModel();
// var field_id = Convert.ToInt32(form["field_id"]);
// #region list mask
// var url = _config["IP"] + "/v2/vault/get";
// var httpMethod = HttpMethod.Post;
// // 取得使用者的 "token" Claim 值
// string token = User.FindFirstValue("token");
//var parameters = new Dictionary<string, string>
// {
// { "Merchant_id", form["Merchant_id"].ToString() },
// { "id", form["vault_id"].ToString() },
// { "info", "MASKS" }
// };
// var apiResult = await _callApi.CallAPI(url, parameters, httpMethod);
// if (apiResult.IsSuccess)
// {
// var FieldsResponse = JsonConvert.DeserializeObject<FieldsResponse>(apiResult.Data.ToString());
// if (FieldsResponse.r == 0)
// {
// if (FieldsResponse.fields.Count > 0)
// {
// var existField = FieldsResponse.fields.Where(f => f.id == field_id).FirstOrDefault();
// if (existField != null)
// {
// ViewBag.FieldName = existField.name;
// return View(existField.masks);
// }
// }
// }
// }
// #endregion
// try
// {
// var url = _config["IP"] + "/v2/vault";
// if (string.IsNullOrEmpty(form["name"]))
// {
// result.IsSuccess = false;
// result.Message = "名稱不能為空";
// return result;
// }
// var httpMethod = HttpMethod.Post;
// // 取得使用者的 "token" Claim 值
// string token = User.FindFirstValue("token");
// var setting = new
// {
// mask = Convert.ToInt32(form["mask"]),
// size_init = Convert.ToInt32(form["size_init"]),
// size_end = Convert.ToInt32(form["size_end"])
// };
// var fieldData = new[]
// {
// new
// {
// action = "ADD",
// field_id=Convert.ToInt32(form["field_id"]),
// name=form["name"].ToString(),
// type = Convert.ToInt32(form["type"]),
// setting = System.Text.Json.JsonSerializer.Serialize(setting)
// }
// };
// string namstext = form["name"];
// var parameters = new Dictionary<string, string>
// {
// { "Merchant_id",form["merchant_id"] },
// { "info","MASKS"},
// { "id", form["vault_id"]},
// { "data",JsonConvert.SerializeObject(fieldData)}
// };
// var apiResult = await _callApi.CallAPI(url, parameters, httpMethod);
// if (apiResult.IsSuccess)
// {
// var Response = JsonConvert.DeserializeObject<Response>(apiResult.Data.ToString());
// if (Response.r == 0)
// {
// if (Response.failInfo == null)
// {
// result.IsSuccess = true;
// result.Message = "Create success";
// return result;
// }
// result.IsSuccess = false;
// result.Message = System.Text.RegularExpressions.Regex.Unescape(string.Join(", ", Response.failInfo));
// return result;
// }
// else
// {
// result.IsSuccess = false;
// result.Message = Response.m.ToString();
// return result;
// }
// }
// }
// catch (Exception e)
// {
// result.IsSuccess = false;
// result.Message = e.Message + e.InnerException?.Message;
// return result;
// }
// result.IsSuccess = false;
// result.Message = "Create fail.";
return result;
}
......
......@@ -9,7 +9,7 @@
{
<input id="isSuccess" hidden value="@TempData["isSuccess"].ToString()" />
}
<div id="msgDiv"></div>
<div class="floating-msg" id="msgDiv"></div>
</div>
@*<div class="row">
......
......@@ -13,7 +13,7 @@
{
<input id="isSuccess" hidden value="@TempData["isSuccess"].ToString()" />
}
<div id="msgDiv"></div>
<div class="floating-msg" id="msgDiv"></div>
</div>
<div class="row">
<div class="col-12 grid-margin stretch-card">
......
......@@ -13,7 +13,7 @@
{
<input id="isSuccess" hidden value="@TempData["isSuccess"].ToString()" />
}
<div id="msgDiv"></div>
<div class="floating-msg" id="msgDiv"></div>
</div>
<div class="row">
<div class="col-12 grid-margin stretch-card">
......
......@@ -13,7 +13,7 @@
{
<input id="isSuccess" hidden value="@TempData["isSuccess"].ToString()" />
}
<div id="msgDiv"></div>
<div class="floating-msg" id="msgDiv"></div>
</div>
<div class="row">
<div class="col-12 grid-margin stretch-card">
......
......@@ -11,7 +11,7 @@
{
<input id="isSuccess" hidden value="@TempData["isSuccess"].ToString()" />
}
<div id="msgDiv"></div>
<div class="floating-msg" id="msgDiv"></div>
</div>
<div class="row">
......
......@@ -39,7 +39,7 @@
{
<input id="isSuccess" hidden value="@TempData["isSuccess"].ToString()" />
}
<div id="msgDiv"></div>
<div class="floating-msg" id="msgDiv"></div>
</div>
<div class="row">
......
......@@ -11,7 +11,7 @@
{
<input id="isSuccess" hidden value="@TempData["isSuccess"].ToString()" />
}
<div id="msgDiv"></div>
<div class="floating-msg" id="msgDiv"></div>
</div>
<div class="row">
......@@ -86,17 +86,17 @@
<tr>
<td class="item">@m.id</td>
<td class="mask_name">mask_name</td>
<td class="mask_name">@m.name</td>
<td class="content">@m.type</td>
<td class="item">@(m.is_unique==1?"是":"否")</td>
<td class="content">@m.setting</td>
<td>
<a data-toggle="modal" data-target="#edit-field-mask" title="修改">
<a class="editMaskBtn" data-toggle="modal" data-target="#edit-field-mask" title="修改">
<i class="fa-solid fa-pen-to-square"></i>
</a>
</td>
<td>
<a data-toggle="modal" data-target="#delete-field-mask" title="刪除">
<a class="delMaskBtn" data-toggle="modal" data-target="#delete-field-mask" title="刪除">
<i class="fa-solid fa-trash-can"></i>
</a>
</td>
......@@ -137,26 +137,32 @@
</div> <!--END of div "modal-header"-->
<div class="modal-body" style="padding-top:35px">
<form id="createMaskForm" class="form-horizontal0" method="post" autocomplete="off" >
<form id="createMaskForm" class="form-horizontal0" method="post" autocomplete="off">
<div id="errorMsg" asp-validation-summary="All" class="text-danger"></div>
<div class="form-group">
<input hidden name="mask_id" >
<input hidden name="merchant_id" value="@ViewBag.merchant_id">
<input hidden name="field_id" value="@ViewBag.field_id">
<input hidden name="vault_id" value="@ViewBag.vault_id">
</div>
<div class="form-group">
<label class="control-labe" for="name">名稱:</label>
<label class="control-labe required" for="name">名稱:</label>
<div class="">
<input type="text" name="name" class="form-control form-control-sm0">
<input type="text" name="name" class="form-control form-control-sm0" required>
</div>
</div>
<div class="form-group">
<label class="control-labe" for="">是否為唯一值:</label>
<div class="form-check form-check-inline">
<input class="form-check-input" type="radio" name="is_unique" id="uniqueY" value="option1" checked>
<input class="form-check-input" type="radio" name="is_unique" id="uniqueY" value="1" checked>
<label class="form-check-label" for="uniqueY">
</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="radio" name="is_unique" id="uniqueN" value="option2">
<input class="form-check-input" type="radio" name="is_unique" id="uniqueN" value="0">
<label class="form-check-label" for="uniqueN">
</label>
......@@ -167,7 +173,7 @@
<label class="control-labe" for="userName">種類:</label>
<div class="form-group">
<div class="dropdown bootstrap-select selecter form-control -tokenization">
<select title="請選遮罩種類(單選)" name="type" id="maskType" class="selectpicker selecter form-control selectpicker-tokenization" onchange="showMaskSettingsAdv()">
<select title="請選遮罩種類(單選)" id="maskType" class="selectpicker selecter form-control selectpicker-tokenization" onchange="showMaskSettingsAdv()">
<option class="bs-title-option" value=""></option>
<option value="0">0</option>
<option value="1">1</option>
......@@ -185,7 +191,7 @@
<label class="control-labe" for="userName">mask:</label>
<div class="form-group">
<div class="dropdown bootstrap-select selecter form-control -tokenization">
<select title="請選擇mask(單選)" name="mask" class="selectpicker selecter form-control selectpicker-tokenization">
<select id="mask" title="請選擇mask(單選)" class="selectpicker selecter form-control selectpicker-tokenization">
<option class="bs-title-option" value=""></option>
<option>0</option>
<option>1</option>
......@@ -196,21 +202,21 @@
</div>
</div>
<div class="form-group">
<label class="control-labe" for="userName">size init:</label>
<label class="control-labe required" for="userName">size init:</label>
<div class="">
<input type="number" name="size_init" class="form-control form-control-sm0">
<input type="number" name="size_init" class="form-control form-control-sm0" required>
</div>
</div>
<div class="form-group">
<label class="control-labe" for="userName">size end:</label>
<label class="control-labe required" for="userName">size end:</label>
<div class="">
<input type="number" name="size_end" class="form-control form-control-sm0">
<input type="number" name="size_end" class="form-control form-control-sm0" required>
</div>
</div>
<div class="form-group">
<label class="control-labe" for="userName">to skip:</label>
<label class="control-labe required" for="userName">to skip:</label>
<div class="">
<input type="text" name="toskip" class="form-control form-control-sm0">
<input type="text" name="toskip" class="form-control form-control-sm0" required>
</div>
</div>
</div>
......@@ -233,8 +239,6 @@
</div>
<!-- END of Modal-->
<!--END of 新增遮罩 Popup Form-->
<!--刪除遮罩 Form-->
<!-- Modal -->
......@@ -258,7 +262,7 @@
</p>
<div class="SubmitBlock SubmitBlock_sm">
<button type="submit" class="btn btn-mainblue-solid" style="margin-right: 10px; width: 80px">確定</button>
<button type="button" id="delMaskConfirmBtn" class="btn btn-mainblue-solid" style="margin-right: 10px; width: 80px">確定</button>
<button type="button" class="btn btn-mainblue-hollow" data-dismiss="modal" style="margin-right: 10px; width: 80px">取消</button>
</div>
......@@ -284,47 +288,109 @@
$('document').ready(function () {
var msg = '@TempData["msg"]';
var IsSuccess = '@TempData["IsSuccess"]';
console.log(IsSuccess + msg);
if (msg != '') {
showAlert(IsSuccess, msg);
}
//新增mask
$("#createMaskBtn").click(function (event) {
/* event.preventDefault();*/
console.log('createMaskForm');
var formData = {
mask: {
name: $('input[name="name"]').val(),
type: $('input[name="type"]').val(),
is_unique: $('input[name="is_unique"]').val(),
size_init: $('input[name="size_init"]').val(),
size_end: $('input[name="size_end"]').val(),
mask: $('input[name="mask"]').val(),
toskip: $('input[name="toskip"]').val(),
$('#new-field-mask .modal-title').text('新增遮罩');
$.ajax({
url: '/TokenVault/CreateMask',
type: 'POST',
data: $('#createMaskForm').serialize(),
success: function (data) {
//console.log(data);
showAlert(data.isSuccess, data.message);
if (data.isSuccess) {
$('#new-field-mask').modal('hide');
setTimeout(function () {
location.reload();
}, 2000);
}
},
merchant_id : parseInt('@ViewBag.Merchant_id'),
vault_id : parseInt('@ViewBag.vault_id'),
field_id : parseInt('@ViewBag.field_id')
error: function (xhr, status, error) {
console.log(xhr.responseText);
showAlert(false, "發生錯誤");
}
});
})
//編輯mask
$(".editMaskBtn").click(function (event) {
var selectMaskId = 0;
selectMaskId = $(this).closest("tr").find("td:first").text();
console.log('selectMaskId=' + selectMaskId);
$('input[name="mask_id"]').val(selectMaskId);
$('#new-field-mask .modal-title').text('編輯遮罩');
$('new-field-mask').modal();
//$.ajax({
// url: '/TokenVault/EditMask',
// type: 'POST',
// data: $('#createMaskForm').serialize(),
// success: function (data) {
// //console.log(data);
// showAlert(data.isSuccess, data.message);
// if (data.isSuccess) {
// $('#new-field-mask').modal('hide');
// setTimeout(function () {
// location.reload();
// }, 2000);
// }
// },
// error: function (xhr, status, error) {
// console.log(xhr.responseText);
// showAlert(false, "發生錯誤");
// }
//});
})
//刪除mask
var selectMaskId = 0;
$('.delMaskBtn').click(function () {
selectMaskId = $(this).closest("tr").find("td:first").text();
console.log('selectMaskId=' + selectMaskId);
})
$('#delMaskConfirmBtn').click(function () {
var data = {
merchant_id:'@ViewBag.merchant_id',
vault_id:'@ViewBag.vault_id',
mask_id: selectMaskId
};
console.log('formData=' + JSON.stringify(formData));
// 提交表單
$.ajax({
url: '/TokenVault/CreateMask',
url: '/TokenVault/DeleteMask',
type: 'POST',
data: JSON.stringify(formData),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (response) {
// 處理成功回應
data: data,
success: function (data) {
//console.log(data);
showAlert(data.isSuccess, data.message);
if (data.isSuccess) {
$('#delete-field-mask').modal('hide');
setTimeout(function () {
location.reload();
}, 2000);
}
},
error: function (error) {
// 處理錯誤回應
error: function (xhr, status, error) {
console.log(xhr.responseText);
showAlert(false, "發生錯誤");
}
});
});
})
......
......@@ -11,7 +11,7 @@
{
<input id="isSuccess" hidden value="@TempData["isSuccess"].ToString()" />
}
<div id="msgDiv"></div>
<div class="floating-msg" id="msgDiv"></div>
</div>
<div class="row">
......
......@@ -13,7 +13,7 @@
{
<input id="isSuccess" hidden value="@TempData["isSuccess"].ToString()" />
}
<div id="msgDiv"></div>
<div class="floating-msg" id="msgDiv"></div>
</div>
<div class="row">
<div class="col-12 grid-margin stretch-card">
......
......@@ -13,7 +13,7 @@
{
<input id="isSuccess" hidden value="@TempData["isSuccess"].ToString()" />
}
<div id="msgDiv"></div>
<div class="floating-msg" id="msgDiv"></div>
</div>
<div class="row">
<div class="col-12 grid-margin stretch-card">
......
......@@ -13,7 +13,7 @@
{
<input id="isSuccess" hidden value="@TempData["isSuccess"].ToString()" />
}
<div id="msgDiv"></div>
<div class="floating-msg" id="msgDiv"></div>
</div>
<div class="row">
<div class="col-12 grid-margin stretch-card">
......
......@@ -13,7 +13,7 @@
{
<input id="isSuccess" hidden value="@TempData["isSuccess"].ToString()" />
}
<div id="msgDiv"></div>
<div class="floating-msg" id="msgDiv"></div>
</div>
<div class="row">
<div class="col-12 grid-margin stretch-card">
......
......@@ -7,7 +7,7 @@
{
<input id="isSuccess" hidden value="@TempData["isSuccess"].ToString()" />
}
<div id="msgDiv"></div>
<div class="floating-msg" id="msgDiv"></div>
</div>
<div class="row">
<div class="col-lg-12 grid-margin stretch-card">
......
......@@ -7,7 +7,7 @@
{
<input id="isSuccess" hidden value="@TempData["isSuccess"].ToString()" />
}
<div id="msgDiv"></div>
<div class="floating-msg" id="msgDiv"></div>
</div>
<div class="row">
......
......@@ -19272,4 +19272,15 @@ tbody {
.departmentRow, .userRow {
cursor: pointer;
}
.floating-msg {
position: fixed;
top: 80px;
right: 20px;
z-index: 9999;
background-color: transparent;
padding: 10px;
border: 0;
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment