Files
17168ERP/web/App_Code/api/familyMembersController.cs
2025-08-29 01:27:25 +08:00

272 lines
8.5 KiB
C#

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; }
}