migrate to new git
This commit is contained in:
272
web/App_Code/api/familyMembersController.cs
Normal file
272
web/App_Code/api/familyMembersController.cs
Normal file
@@ -0,0 +1,272 @@
|
||||
using Model;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data.Entity.Infrastructure;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Net.Http;
|
||||
using System.Web.Http;
|
||||
using System.Data.Entity;
|
||||
//// CHECK Models JSON-Ignore, by: API pending access
|
||||
[ezAuthorize]
|
||||
public class familyMembersController : ApiController
|
||||
{
|
||||
private ezEntities _db = new ezEntities();
|
||||
|
||||
// GET api/familymembers
|
||||
public IHttpActionResult Get()
|
||||
{
|
||||
var familyMembers = _db.family_members.ToList();
|
||||
return Ok(familyMembers);
|
||||
}
|
||||
|
||||
// GET api/familymembers/5
|
||||
public IHttpActionResult Get(int id)
|
||||
{
|
||||
var familyMember = _db.family_members.Find(id);
|
||||
if (familyMember == null)
|
||||
{
|
||||
return NotFound();
|
||||
}
|
||||
return Ok(familyMember);
|
||||
}
|
||||
|
||||
// POST api/familymembers
|
||||
public IHttpActionResult Post([FromBody] family_members familyMember)
|
||||
{
|
||||
if (!ModelState.IsValid)
|
||||
{
|
||||
return BadRequest(ModelState);
|
||||
}
|
||||
|
||||
_db.family_members.Add(familyMember);
|
||||
_db.SaveChanges();
|
||||
|
||||
return CreatedAtRoute("DefaultApi", new { id = familyMember.num }, familyMember);
|
||||
}
|
||||
|
||||
// PUT api/familymembers/5
|
||||
public IHttpActionResult Put(int id, [FromBody] family_members familyMember)
|
||||
{
|
||||
if (!ModelState.IsValid)
|
||||
{
|
||||
return BadRequest(ModelState);
|
||||
}
|
||||
|
||||
if (id != familyMember.num)
|
||||
{
|
||||
return BadRequest();
|
||||
}
|
||||
|
||||
_db.Entry(familyMember).State = EntityState.Modified;
|
||||
|
||||
try
|
||||
{
|
||||
_db.SaveChanges();
|
||||
}
|
||||
catch (DbUpdateConcurrencyException ex)
|
||||
{
|
||||
if (!FamilyMemberExists(id))
|
||||
{
|
||||
return NotFound();
|
||||
}
|
||||
else
|
||||
{
|
||||
throw;
|
||||
}
|
||||
}
|
||||
return Ok(familyMember);
|
||||
//return StatusCode(HttpStatusCode.NoContent);
|
||||
}
|
||||
|
||||
// DELETE api/familymembers/5
|
||||
public IHttpActionResult Delete(int id)
|
||||
{
|
||||
var familyMember = _db.family_members.Find(id);
|
||||
if (familyMember == null)
|
||||
{
|
||||
return NotFound();
|
||||
}
|
||||
|
||||
_db.family_members.Remove(familyMember);
|
||||
_db.SaveChanges();
|
||||
|
||||
return Ok(familyMember);
|
||||
}
|
||||
|
||||
// GET api/familymembers/follower/5
|
||||
[Route("api/familymembers/follower/{followerId}")]
|
||||
public IHttpActionResult GetByFollower(int followerId)
|
||||
{
|
||||
var familyMembers = _db.family_members.Where(fm => fm.follower_num == followerId).ToList();
|
||||
return Ok(familyMembers);
|
||||
}
|
||||
|
||||
// GET api/familymembers/GetList
|
||||
[Route("api/familymembers/GetList")]
|
||||
public IHttpActionResult GetList(int page = 1, int pageSize = 10, string sortBy = "num", bool ascending = true)
|
||||
{
|
||||
var query = _db.family_members.AsQueryable();
|
||||
|
||||
// 排序
|
||||
switch (sortBy.ToLower())
|
||||
{
|
||||
case "num":
|
||||
query = ascending ? query.OrderBy(f => f.num) : query.OrderByDescending(f => f.num);
|
||||
break;
|
||||
case "fam_name":
|
||||
query = ascending ? query.OrderBy(f => f.fam_name) : query.OrderByDescending(f => f.fam_name);
|
||||
break;
|
||||
case "fam_gender":
|
||||
query = ascending ? query.OrderBy(f => f.fam_gender) : query.OrderByDescending(f => f.fam_gender);
|
||||
break;
|
||||
case "fam_title":
|
||||
query = ascending ? query.OrderBy(f => f.fam_title) : query.OrderByDescending(f => f.fam_title);
|
||||
break;
|
||||
case "birthdate":
|
||||
query = ascending ? query.OrderBy(f => f.birthdate) : query.OrderByDescending(f => f.birthdate);
|
||||
break;
|
||||
// 添加其他可能的排序欄位...
|
||||
default:
|
||||
query = ascending ? query.OrderBy(f => f.num) : query.OrderByDescending(f => f.num);
|
||||
break;
|
||||
}
|
||||
|
||||
// 分頁
|
||||
var totalCount = query.Count();
|
||||
var totalPages = (int)Math.Ceiling((double)totalCount / pageSize);
|
||||
var familyMembers = query.Skip((page - 1) * pageSize).Take(pageSize).ToList();
|
||||
|
||||
return Ok(new
|
||||
{
|
||||
TotalCount = totalCount,
|
||||
TotalPages = totalPages,
|
||||
Page = page,
|
||||
PageSize = pageSize,
|
||||
Data = familyMembers
|
||||
});
|
||||
}
|
||||
|
||||
// GET api/familymembers/count
|
||||
[Route("api/familymembers/count")]
|
||||
public IHttpActionResult GetCount()
|
||||
{
|
||||
var count = _db.family_members.Count();
|
||||
return Ok(count);
|
||||
}
|
||||
|
||||
// POST api/familymembers/BatchSave
|
||||
[Route("api/familymembers/BatchSave")]
|
||||
public IHttpActionResult BatchSave([FromBody] List<family_members> familyMembers)
|
||||
{
|
||||
if (!ModelState.IsValid)
|
||||
{
|
||||
return BadRequest(ModelState);
|
||||
}
|
||||
|
||||
foreach (var familyMember in familyMembers)
|
||||
{
|
||||
if (familyMember.num == 0)
|
||||
{
|
||||
_db.family_members.Add(familyMember);
|
||||
}
|
||||
else
|
||||
{
|
||||
_db.Entry(familyMember).State = EntityState.Modified;
|
||||
}
|
||||
}
|
||||
|
||||
_db.SaveChanges();
|
||||
|
||||
return Ok();
|
||||
}
|
||||
|
||||
// POST api/familymembers/Search
|
||||
[Route("api/familymembers/Search")]
|
||||
public IHttpActionResult Search([FromBody] FamilyMemberSearchModel searchModel)
|
||||
{
|
||||
var query = _db.family_members.AsQueryable();
|
||||
|
||||
if (!string.IsNullOrEmpty(searchModel.Name))
|
||||
{
|
||||
query = query.Where(fm => fm.fam_name.Contains(searchModel.Name));
|
||||
}
|
||||
|
||||
if (!string.IsNullOrEmpty(searchModel.Gender))
|
||||
{
|
||||
query = query.Where(fm => fm.fam_gender == searchModel.Gender);
|
||||
}
|
||||
|
||||
// 添加更多搜索條件...
|
||||
|
||||
var result = query.ToList();
|
||||
return Ok(result);
|
||||
}
|
||||
|
||||
// GET api/familymembers/zodiac/鼠
|
||||
[Route("api/familymembers/zodiac/{zodiac}")]
|
||||
public IHttpActionResult GetByZodiac(string zodiac)
|
||||
{
|
||||
var familyMembers = _db.family_members.Where(fm => fm.zodiac == zodiac).ToList();
|
||||
return Ok(familyMembers);
|
||||
}
|
||||
|
||||
// GET api/familymembers/age-range?minAge=20&maxAge=30
|
||||
[Route("api/familymembers/age-range")]
|
||||
public IHttpActionResult GetByAgeRange(int minAge, int maxAge)
|
||||
{
|
||||
var currentDate = DateTime.Now;
|
||||
var familyMembers = _db.family_members
|
||||
.ToList() // 先獲取所有記錄
|
||||
.Where(fm => fm.birthdate.HasValue &&
|
||||
fm.birthdate.Value.AddYears(minAge) <= currentDate &&
|
||||
fm.birthdate.Value.AddYears(maxAge) > currentDate)
|
||||
.ToList();
|
||||
|
||||
return Ok(familyMembers);
|
||||
}
|
||||
|
||||
// GET api/familymembers/deceased
|
||||
[Route("api/familymembers/deceased")]
|
||||
public IHttpActionResult GetDeceased()
|
||||
{
|
||||
var deceasedMembers = _db.family_members.Where(fm => fm.deceased == true).ToList();
|
||||
return Ok(deceasedMembers);
|
||||
}
|
||||
|
||||
// PUT api/familymembers/5/lunar-birthday
|
||||
[Route("api/familymembers/{id}/lunar-birthday")]
|
||||
public IHttpActionResult UpdateLunarBirthday(int id, [FromBody] string lunarBirthday)
|
||||
{
|
||||
var familyMember = _db.family_members.Find(id);
|
||||
if (familyMember == null)
|
||||
{
|
||||
return NotFound();
|
||||
}
|
||||
|
||||
familyMember.lunar_birthday = lunarBirthday;
|
||||
_db.SaveChanges();
|
||||
|
||||
return Ok(familyMember);
|
||||
}
|
||||
|
||||
private bool FamilyMemberExists(int id)
|
||||
{
|
||||
return _db.family_members.Count(e => e.num == id) > 0;
|
||||
}
|
||||
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing)
|
||||
{
|
||||
_db.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
}
|
||||
public class FamilyMemberSearchModel
|
||||
{
|
||||
// 搜索條件...
|
||||
public string Name { get; set; }
|
||||
public string Gender { get; set; }
|
||||
}
|
||||
Reference in New Issue
Block a user