updates
parent
76419969f2
commit
6615c2a4be
|
|
@ -25,6 +25,84 @@ namespace QuotationMaker.Controllers
|
|||
|
||||
}
|
||||
|
||||
[Route("addNewGroup")]
|
||||
public ActionResult AddNewGroup(IFormCollection obj) {
|
||||
groupListResult ret = new groupListResult();
|
||||
|
||||
authToken token = new authToken(this._httpContextAccessor);
|
||||
if (token.user_isLogin == false)
|
||||
{
|
||||
HttpContext.Response.Cookies.Delete("token_key");
|
||||
ret.ret = "no";
|
||||
ret.err_code = "99999";
|
||||
ret.message = "非登入狀態!";
|
||||
return Content(JsonConvert.SerializeObject(ret), "application/json;charset=utf-8");
|
||||
}
|
||||
|
||||
if (token.user_perm != "system")
|
||||
{
|
||||
ret.ret = "no";
|
||||
ret.err_code = "90001";
|
||||
ret.message = "此帳號無此api使用權限!";
|
||||
return Content(JsonConvert.SerializeObject(ret), "application/json;charset=utf-8");
|
||||
}
|
||||
|
||||
string dept_uid = obj["dept_uid"].ToString();
|
||||
string group_name = obj["group_name"].ToString();
|
||||
string users_json_str = obj["users_json"].ToString();
|
||||
string group_uid = GlobalClass.CreateRandomCode(10);
|
||||
|
||||
group newGroup = new group();
|
||||
newGroup.group_uid = group_uid;
|
||||
newGroup.group_name = group_name;
|
||||
newGroup.dept_uid = dept_uid;
|
||||
|
||||
|
||||
dynamic usersJsonObj;
|
||||
|
||||
try
|
||||
{
|
||||
usersJsonObj = JsonConvert.DeserializeObject(users_json_str);
|
||||
conn.Insert(newGroup);
|
||||
|
||||
|
||||
}
|
||||
catch (Exception ex) {
|
||||
ret.ret = "no";
|
||||
ret.err_code = "0003";
|
||||
ret.message = "使用者列表資料錯誤 users json error," + ex.Message;
|
||||
return Content(JsonConvert.SerializeObject(ret), "application/json;charset=utf-8");
|
||||
}
|
||||
|
||||
string nowrite_msg = "";
|
||||
|
||||
foreach (dynamic item in usersJsonObj) {
|
||||
string user_uid = item.user_uid;
|
||||
string user_name = item.user_name;
|
||||
groupUser chk_user = conn.QueryFirstOrDefault<groupUser>("select * from groupUser where user_uid = @user_uid", new { user_uid = user_uid});
|
||||
|
||||
if (chk_user == null)
|
||||
{
|
||||
groupUser newGU = new groupUser();
|
||||
newGU.group_uid = group_uid;
|
||||
newGU.user_uid = user_uid;
|
||||
newGU.groupUser_uid = GlobalClass.CreateRandomCode(16);
|
||||
|
||||
conn.Insert<groupUser>(newGU);
|
||||
}
|
||||
else {
|
||||
nowrite_msg += user_name + " 此用戶已經是其他群組的成員,故此員取消加入!\n";
|
||||
}
|
||||
}
|
||||
|
||||
ret.groups.Add(new groupDetail(newGroup));
|
||||
|
||||
ret.message = nowrite_msg;
|
||||
|
||||
|
||||
return Content(JsonConvert.SerializeObject(ret), "application/json;charset=utf-8");
|
||||
}
|
||||
|
||||
[Route("noGroupUserList")]
|
||||
public ActionResult NoGroupUserList(IFormCollection obj) {
|
||||
userListResult ret = new userListResult();
|
||||
|
|
|
|||
|
|
@ -44,7 +44,7 @@ public class DbTableClass
|
|||
public DateTime groupUser_createdate { get; set; } = DateTime.Now;
|
||||
}
|
||||
|
||||
[Table("group")]
|
||||
[Table("[group]")]
|
||||
public class group
|
||||
{
|
||||
[JsonIgnore]
|
||||
|
|
|
|||
|
|
@ -12,6 +12,8 @@ public class resultClass
|
|||
public List<depts> depts = new List<depts>();
|
||||
}
|
||||
|
||||
|
||||
|
||||
public class groupListResult
|
||||
{
|
||||
public string ret = "no";
|
||||
|
|
@ -30,8 +32,19 @@ public class resultClass
|
|||
|
||||
public groupDetail() { }
|
||||
|
||||
public groupDetail(group group) {
|
||||
users = conn.Query<user>("select B.* from groupUser A, users B where A.user_uid = B.user_uid and A.group_uid = @group_uid", new {group_uid = group.group_uid}).ToList();
|
||||
public groupDetail(group objData) {
|
||||
Type projectType = objData.GetType();
|
||||
|
||||
foreach (var prop in projectType.GetProperties())
|
||||
{
|
||||
string propName = prop.Name;
|
||||
var valueProperty = projectType.GetProperty(propName);
|
||||
object propValue = valueProperty.GetValue(objData, null);
|
||||
|
||||
this.GetType().GetProperty(propName).SetValue(this, propValue);
|
||||
}
|
||||
|
||||
users = conn.Query<user>("select B.* from groupUser A, users B where A.user_uid = B.user_uid and A.group_uid = @group_uid", new {group_uid = objData.group_uid}).ToList();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -68,7 +68,7 @@
|
|||
<button class="btn btn-sm btn-secondary">Edit</button> <button class="btn btn-sm btn-secondary"><i class="far fa-trash-alt"></i></button>
|
||||
</div>
|
||||
</div>
|
||||
<div id="nestable01" class="dd" data-toggle="nestable" data-group="1" data-max-depth="0">
|
||||
<div id="nestable01" class="dd" data-toggle="sortable" data-group="1" data-max-depth="0">
|
||||
<!-- .dd-list -->
|
||||
<ol class="dd-list">
|
||||
<li class="dd-item dd-nodrag" data-id="1">
|
||||
|
|
@ -108,7 +108,7 @@
|
|||
</div><!-- /.modal-header -->
|
||||
<!-- .modal-body -->
|
||||
<div class="modal-body">
|
||||
<input type="hidden" id="method" />
|
||||
<input type="hidden" id="group_method" />
|
||||
<input type="hidden" id="group_uid" />
|
||||
<input type="hidden" id="dept_uid" />
|
||||
<!-- .form-group -->
|
||||
|
|
@ -124,27 +124,10 @@
|
|||
<!-- .card -->
|
||||
<div class="card card-fluid">
|
||||
<div class="card-header border-bottom-0"> 成員 </div><!-- .nestable -->
|
||||
<div id="nestableMember" class="dd" data-toggle="nestable" data-group="1" data-max-depth="0">
|
||||
<div id="nestableMember" class="dd" data-toggle="sortable" data-group-uid="ccc" data-max-depth="1">
|
||||
<!-- .dd-list -->
|
||||
<ol class="dd-list">
|
||||
<li class="dd-item dd-nodrag" data-id="1" data-user-uid="123" >
|
||||
<div class="dd-handle">
|
||||
<span class="dd-nodrag drag-indicator"></span>
|
||||
<div> user1 </div>
|
||||
<div class="dd-nodrag btn-group ml-auto">
|
||||
<button class="btn btn-sm btn-secondary"><i class="far fa-trash-alt"></i></button>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="dd-item dd-nodrag" data-id="1" data-user-uid="456">
|
||||
<div class="dd-handle">
|
||||
<span class="dd-nodrag drag-indicator"></span>
|
||||
<div> user2 </div>
|
||||
<div class="dd-nodrag btn-group ml-auto">
|
||||
<button class="btn btn-sm btn-secondary"><i class="far fa-trash-alt"></i></button>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
</ol><!-- /.dd-list -->
|
||||
</div><!-- /.nestable -->
|
||||
<!-- .card-footer -->
|
||||
|
|
@ -157,7 +140,7 @@
|
|||
</div><!-- /.modal-body -->
|
||||
<!-- .modal-footer -->
|
||||
<div class="modal-footer">
|
||||
<button type="button" id="optionItemDialogSaveBtn" class="btn btn-primary">Save</button> <button type="button" class="btn btn-light" data-dismiss="modal">Close</button>
|
||||
<button type="button" id="groupDialogSaveBtn" class="btn btn-primary">Save</button> <button type="button" class="btn btn-light" data-dismiss="modal">Close</button>
|
||||
</div><!-- /.modal-footer -->
|
||||
</div><!-- /.modal-content -->
|
||||
</div><!-- /.modal-dialog -->
|
||||
|
|
@ -181,9 +164,9 @@
|
|||
</div><!-- /.modal-header -->
|
||||
<!-- .modal-body -->
|
||||
<div class="modal-body">
|
||||
<input type="hidden" id="method" />
|
||||
<input type="hidden" id="group_uid" />
|
||||
<input type="hidden" id="dept_uid" />
|
||||
<input type="hidden" id="client_method" />
|
||||
<input type="hidden" id="client_group_uid" />
|
||||
<input type="hidden" id="client_dept_uid" />
|
||||
|
||||
<!-- grid row -->
|
||||
<div class="row">
|
||||
|
|
|
|||
|
|
@ -1,26 +1,92 @@
|
|||
|
||||
|
||||
var tmpNestableObj;
|
||||
var tmpNestableItem;
|
||||
|
||||
$(document).ready(function () {
|
||||
deptList();
|
||||
|
||||
$('#memberAddSaveBtn').on('click', function () {
|
||||
var userArray = [];
|
||||
var html = '';
|
||||
$.each($('input[type=checkbox][name="memberChkList[]"]:checked'), function () {
|
||||
var item = {
|
||||
user_uid: $(this).val(),
|
||||
user_name: $(this).parent().find('span').eq(0).text().trim()
|
||||
}
|
||||
userArray.push(item);
|
||||
html += optionItemHtml(item);
|
||||
});
|
||||
|
||||
$('#nestableMember .dd-list').append(html);
|
||||
|
||||
$('#memberModal').modal('toggle');
|
||||
});
|
||||
|
||||
$('#groupNewModal').on('click', function () {
|
||||
$('#group_method').val('add');
|
||||
$('#dept_uid').val($('#dept_select').val());
|
||||
$('#nestableMember .dd-list').children().remove();
|
||||
//$('#nestableMember').nestable();
|
||||
$('#groupModal').modal('toggle');
|
||||
});
|
||||
|
||||
$('#groupDialogSaveBtn').on('click', function () {
|
||||
var method = $('#group_method').val();
|
||||
var group_uid = $('#group_uid').val();
|
||||
var dept_uid = $('#dept_uid').val();
|
||||
var group_name = $('#group_name').val();
|
||||
var userArray = [];
|
||||
|
||||
if (group_name == '') {
|
||||
alert('請輸入群組名稱!');
|
||||
return;
|
||||
}
|
||||
|
||||
$.each($('#nestableMember .dd-list li'), function () {
|
||||
var tmp_uid = $(this).attr('data-user-uid');
|
||||
var tmp_name = $(this).find("[data-name='option_name']").text();
|
||||
var item = {
|
||||
user_uid: tmp_uid,
|
||||
user_name: tmp_name
|
||||
}
|
||||
userArray.push(item);
|
||||
});
|
||||
|
||||
if (userArray.length == 0) {
|
||||
alert('群組內至少需要一名成員!');
|
||||
return;
|
||||
}
|
||||
|
||||
var users_json = JSON.stringify(userArray);
|
||||
|
||||
var formData = {
|
||||
dept_uid: dept_uid,
|
||||
group_name: group_name,
|
||||
users_json: users_json
|
||||
}
|
||||
|
||||
$.ajax({
|
||||
url: "/AuthApi/addNewGroup",
|
||||
type: "post",
|
||||
data: formData,
|
||||
success: function (data, textStatus, jqXHR) {
|
||||
if (data.ret == "yes") {
|
||||
|
||||
|
||||
$('#groupModal').modal('toggle');
|
||||
} else {
|
||||
alert(data.message);
|
||||
|
||||
if (data.err_code == "99999") {
|
||||
location.href = "/Root/Login";
|
||||
}
|
||||
}
|
||||
},
|
||||
error: function (jqXHR, textStatus, errorThrown) {
|
||||
alert('網路或伺服器發生錯誤,請稍後重試!');
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
function newMemberClick(dept_uid) {
|
||||
|
|
@ -139,3 +205,30 @@ function deptList() {
|
|||
}
|
||||
});
|
||||
}
|
||||
|
||||
function optionItemHtml(item) {
|
||||
var html = '';
|
||||
html += '<li class="dd-item dd-nodrag" data-id="1" data-user-uid="'+ item.user_uid +'">';
|
||||
html += ' <div class="dd-handle">';
|
||||
html += ' <span class="dd-nodrag drag-indicator"></span>';
|
||||
html += ' <div data-name="option_name"> ' + item.user_name + ' </div>';
|
||||
html += ' <div class="dd-nodrag btn-group ml-auto">';
|
||||
html += ' <button type="button" class="btn btn-sm btn-secondary" onclick="delMemberBtnClick(this);"><i class="far fa-trash-alt"></i></button>';
|
||||
html += ' </div>';
|
||||
html += ' </div>';
|
||||
html += '</li > ';
|
||||
return html;
|
||||
}
|
||||
|
||||
function delMemberBtnClick(obj) {
|
||||
if (confirm('再次確認要移除此成員?')) {
|
||||
tmpNestableItem = $(obj).parent().parent().find("[data-name='option_name']");
|
||||
var optionItem_name = $(obj).parent().parent().find("[data-name='option_name']").text();
|
||||
var user_uid = $(obj).parent().parent().parent().attr("data-user-uid");
|
||||
|
||||
if ($('#client_method').val() == 'add') {
|
||||
tmpNestableItem.parent().parent().remove();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue