272 lines
8.5 KiB
C#
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; }
|
|
} |