---
# System prepended metadata

title: 2022/11/11 電算中心學習筆記
tags: [NTUST-CC]

---

# 2022/11/11 電算中心學習筆記
###### tags: `NTUST-CC`

HTML<=>Controller<=>Service<=>Repository

## HTML
就是指你當下要實行的畫面。

## Service
裡面所寫的是前端所寫的東西，帶到Controller後所要處理的服務。

以下列來說，要做的服務有搜尋、新增、修改和刪除。
> void 代表我在做新增修改刪除時不回傳東西。
> v_stu_status代表在IStuStatusRepository.cs所對應到的一個Table。
![](https://i.imgur.com/rdN0Z5S.png)
![](https://i.imgur.com/ZaqE9bV.png)

### IStuStatusService.cs
```javascript=
public interface IStuStatusService
    {
        string GetSutdentInfo(string studentid);
        void Add(v_stu_status stu);//stu為v_stu_status的物件object
        void Update(v_stu_status stu, string IDCard);//在Update假設會用到IDCard(身分證)的字串
        void Delete(v_stu_status stu);

    }
```
### StuStatusService.cs
```javascript=
public string GetSutdentInfo(string studentid)
    {
        var reslut = stuStatusRepository.Where(item=>item.StudentNo== studentid).FirstOrDefault();
        var aa = stuStatusRepository.Where(item=>item.StudentNo== studentid).FirstOrDefault();
        var customersResponse = mapper.Map<StudentInfo>(aa);
        return reslut.StudentName;
    }
public void Add(v_stu_status  stu)
    {
        stuStatusRepository.Add(stu);
        UnitOfWork.Commit();
    }

public void Update(v_stu_status stu,string IDCard)
    {
        var org = stuStatusRepository.Get(item => item.StudentNo == stu.StudentNo);//找到table的StudentNo有否跟前抬回傳的StudentNo一樣。
        org.Semester = stu.Semester;
        org.IDCard = IDCard;
        org.CreateDateTime = DateTime.Now.ToShortDateString();//直接抓電腦的時間
        org.OutEmail = stu.OutEmail;
        org.StudentEngName = stu.StudentEngName;
        org.StudentName = stu.StudentName;
        stuStatusRepository.Update(org);//repository update整個object
        UnitOfWork.Commit();
    }
public void Delete(v_stu_status stu)
    {
        var org = stuStatusRepository.Get(item => item.StudentNo == stu.StudentNo);
        stuStatusRepository.Delete(org);
        UnitOfWork.Commit();//代表刪除repo.內的這個動作已End
    }
```

## Controller
基本上一個HTML對應的一個Controller，在進到Service之前，要知道前端所帶來什麼值。

以下列範例來說
```javascript=
public ActionResult Index()
    {
        v_stu_status s = new v_stu_status();//我們用匿名方式，去呼叫table來到值
        s.IDCard = "dfdfds";//以下這些都是假設我們這些世崇前端帶回的值。
        s.Semester="=234";
        s.OutEmail = "gfjj";
        s.StudentEngName = "23e4r1";
        s.StudentName = "wqdd";
        s.StudentNo = "44444";
        stuStatusService.Add(s);//新增上方的整個資訊(物件s)

        s.Semester = "FGGGGGGG";//原本Semester="=234"要更新為"FGGGGGGG"
        stuStatusService.Update(s,"LLLL");//這邊的s是我們要更新Semester所以要修新的值；"LLLL"是IStuStatusService.cs所說需要的字串IDCard

        stuStatusService.Delete(s);

        var aa = stuStatusService.GetSutdentInfo("M10810207");
        //  logger.Info("AAAAA");
        var a = User.Identity.Name;
        return View();
    }
```

## 測試
### Add
![](https://i.imgur.com/HMYiyJo.png)
### Update
![](https://i.imgur.com/TBtxlce.png)
### Delete
![](https://i.imgur.com/Y7qngKf.png)
