iT邦幫忙

2024 iThome 鐵人賽

DAY 25
0
Modern Web

asp.net core 分層架構快速上手系列 第 26

Day25 分店與員工管理

  • 分享至 

  • xImage
  •  
  • 新增員工或主管時,要能分配隸屬哪個分店。
  • 註冊時資料就要能判斷。
    • ApplicationUser新增StoreId與Store來綁定角色。
  • 設置完後:
    • Add-migration addStoreToUser
    • Update-database
public class ApplicationUser : IdentityUser
    {
[Required]
public string Name { get; set; }
public string Address { get; set; }
public int? StoreId { get; set; }
       [ForeignKey("StoreId")]
[ValidateNever]
public Store Store { get; set; }
    }

https://ithelp.ithome.com.tw/upload/images/20240927/201474382LKdjgAzQI.png

  • 註冊時設定分店資訊
    • 開啟Register.cs
  1. public class InputModel 內設置:
public int? StoreId { get; set; }
public IEnumerable<SelectListItem> StoreList { get; set; }
  1. Task OnGetAsync 內設置:
 Input = new()
    {
RoleList = _roleManager.Roles.Select(x => x.Name).Select(i => new SelectListItem
{
    Text = i,
    Value = i
}),
StoreList = _unitOfWork.Store.GetAll().Select(i => new SelectListItem
{
    Text = i.Name,
    Value = i.Id.ToString()
})
    };
  • Task OnPostAsync
    • 建立員工或主管時,AspNetUsers寫入StoreId
if (Input.Role == SD.Role_Employee || Input.Role == SD.Role_Manager)
{
    user.StoreId = Input.StoreId;
}

https://ithelp.ithome.com.tw/upload/images/20240927/20147438tFMJLOVdw0.png

  • 修改註冊功能:
    • Task OnPostAsync
    • 由Admin or Manager新增帳號時,新增帳號後,點選confirm不會自動登入
 if (_userManager.Options.SignIn.RequireConfirmedAccount)
 {
     return RedirectToPage("RegisterConfirmation", new { email = Input.Email, returnUrl = returnUrl });
 }
 else
 {
     if (User.IsInRole(SD.Role_Admin) || User.IsInRole(SD.Role_Manager))
     {
 TempData["success"] = "建立新使用者成功";
     }
     else
     {
 await _signInManager.SignInAsync(user, isPersistent: false);
     }
     return LocalRedirect(returnUrl);
 }
  • 修改註冊頁面,開啟Register.cshtml
@if (User.IsInRole(SD.Role_Admin) || User.IsInRole(SD.Role_Manager))
{
<div class="form-floating mb-3">
<select asp-for="Input.Role" asp-items="@Model.Input.RoleList" class="form-select">
<option disabled selected>-Select Role-</option>
</select>
</div>
<div class="form-floating mb-3">
<select asp-for="Input.StoreId" style="display:none" asp-items="@Model.Input.StoreList" class="form-select">
<option disabled selected>-Select Store-</option>
</select>
</div>
}
 <script>
$(document).ready(function () {
    $('#Input_Role').change(function () {
var selection = $('#Input_Role Option:Selected').text();
if (selection == 'Employee' || selection == 'Manager') {
    $('#Input_StoreId').show();
} else {
    $('#Input_StoreId').hide();
}
    })
})
    </script>

https://ithelp.ithome.com.tw/upload/images/20240927/20147438wmJ8zwsbux.jpg


上一篇
Day24 建立分店(Upsert設置)
下一篇
Day26 建立購物車(建立資料)
系列文
asp.net core 分層架構快速上手31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言