691 lines
25 KiB
C#
691 lines
25 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Net;
|
|
using System.Net.Http;
|
|
using System.Web.Http;
|
|
using PagedList;
|
|
using Newtonsoft.Json;
|
|
using System.Collections;
|
|
using DocumentFormat.OpenXml.Office2010.Excel;
|
|
using MyWeb;
|
|
using System.Data.Entity;
|
|
|
|
// api/Follower
|
|
//[ezAuthorize(Roles = "admin")]//群組:*
|
|
[ezAuthorize]
|
|
//[RoutePrefix("api/follower")]
|
|
public class FollowerController : ApiController
|
|
{
|
|
private Model.ezEntities _db = new Model.ezEntities();
|
|
// GET api/<controller>
|
|
public IEnumerable<Model.follower> Get()
|
|
{
|
|
var list = _db.followers.ToList();
|
|
if (list == null) throw new HttpResponseException(HttpStatusCode.NotFound);
|
|
return list;
|
|
}
|
|
|
|
public IEnumerable<Model.follower> Get(int page, int pageSize = 10,
|
|
string sortBy="", bool sortDesc=false)
|
|
{
|
|
var list = _db.followers.OrderBy(o=>o.f_number).ToPagedList(page, pageSize);
|
|
if (list == null) throw new HttpResponseException(HttpStatusCode.NotFound);
|
|
return list;
|
|
}
|
|
|
|
// GET api/<controller>/5
|
|
public Model.follower Get(int id)
|
|
{
|
|
var item = _db.followers.Where(q => q.num == id).FirstOrDefault();
|
|
//if (item == null) throw new HttpResponseException(HttpStatusCode.NotFound);
|
|
return item;
|
|
}
|
|
|
|
// POST api/<controller>
|
|
public void Post([FromBody] Model.follower item)
|
|
{
|
|
}
|
|
|
|
// PUT api/<controller>/5
|
|
public void Put(int id, [FromBody] Model.follower item)
|
|
{
|
|
}
|
|
|
|
// DELETE api/<controller>/5
|
|
public void Delete(int id)
|
|
{
|
|
var prod = _db.followers.AsEnumerable().Where(q => q.num == id).FirstOrDefault(); //刪除該筆資料
|
|
/*if (prod != null)
|
|
{
|
|
|
|
prod.pro_order_detail.Clear(); // Clear 方法來清除相關聯的 Child 資料,針對選擇性關聯欄位,它就會自動將欄位值更新成 null。
|
|
prod.pro_order.Clear();
|
|
|
|
prod.leader = null;//清空leader
|
|
|
|
_db.followers.Remove(prod);
|
|
_db.SaveChanges();//執行
|
|
|
|
Model.admin_log admin_log = new Model.admin_log();
|
|
MyWeb.admin admin = new MyWeb.admin();//api裡不可以用MyWeb
|
|
if (admin.isLoign())
|
|
{
|
|
admin_log.writeLog(admin.info.u_id, (int)Model.admin_log.Systems.Follower, (int)Model.admin_log.Status.Delete, prod.f_number+prod.u_name);
|
|
}
|
|
|
|
}*/
|
|
if (prod != null)
|
|
{
|
|
////prod.IsDel = true; ////不確定是否新增欄位? 先註解
|
|
_db.SaveChanges();
|
|
Model.admin_log admin_log = new Model.admin_log();
|
|
MyWeb.admin admin = new MyWeb.admin();//api裡不可以用MyWeb
|
|
if (admin.isLoign())
|
|
{
|
|
admin_log.writeLog(admin.info.u_id, (int)Model.admin_log.Systems.Follower, (int)Model.admin_log.Status.Delete, prod.f_number + prod.u_name);
|
|
}
|
|
}
|
|
}
|
|
|
|
[HttpDelete]
|
|
[Route("api/follower/Delete/{nums}")]
|
|
public void Delete(string nums)
|
|
{
|
|
if (!string.IsNullOrEmpty(nums))
|
|
{
|
|
var getDelItem = nums.TrimEnd(',').Split(',').Select(s => int.Parse(s));
|
|
|
|
var prod = _db.followers.AsEnumerable().Where(q => getDelItem.Contains(q.num)).ToList();
|
|
if (prod.Count() > 0)
|
|
{
|
|
foreach (var item in prod)
|
|
{
|
|
foreach (var item2 in item.pro_order_detail1)
|
|
item2.from_id = null; //清空訂單明細的陽上報恩者from_id //f_num設定串聯刪除
|
|
|
|
foreach (var item2 in item.pro_order)
|
|
item2.introducer = null;
|
|
|
|
item.leader = null;//清空leader
|
|
|
|
}
|
|
|
|
_db.followers.RemoveRange(prod);
|
|
_db.SaveChanges();
|
|
|
|
Model.admin_log admin_log = new Model.admin_log();
|
|
MyWeb.admin admin = new MyWeb.admin();//api裡不可以用MyWeb
|
|
if (admin.isLoign())
|
|
{
|
|
admin_log.writeLog(admin.info.u_id, (int)Model.admin_log.Systems.Follower, (int)Model.admin_log.Status.Delete, admin_log.LogViewBtn(prod.Select(x => x.f_number + x.u_name).ToList()));
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
|
|
[HttpGet]
|
|
[Route("api/follower/count")]
|
|
public int Count()
|
|
{
|
|
var count = _db.followers.Count();
|
|
return count;
|
|
}
|
|
[HttpPost]
|
|
[Route("api/follower/GetList")]
|
|
public IHttpActionResult GetList([FromBody] Model.ViewModel.follower q,
|
|
int page, int pageSize = 10, string sortBy = "", bool sortDesc = false)
|
|
{
|
|
////var qry = _db.followers.Where(a => a.IsDel == false).AsEnumerable();////不確定是否新增欄位? 先註解
|
|
var qry = _db.followers.AsEnumerable();
|
|
|
|
if (!string.IsNullOrEmpty(q.f_number))
|
|
qry = qry.Where(o => o.f_number.Contains(q.f_number.Trim()));
|
|
if (!string.IsNullOrEmpty(q.u_name))
|
|
qry = qry.Where(o => o.u_name.Contains(q.u_name.Trim()));
|
|
if (q.birthday.HasValue)
|
|
qry = qry.Where(o => o.birthday >= q.birthday.Value);
|
|
if (q.birthday2.HasValue)
|
|
qry = qry.Where(o => o.birthday < Convert.ToDateTime(q.birthday2.Value).AddDays(1));
|
|
if (!string.IsNullOrEmpty(q.address))
|
|
qry = qry.Where(o => o.address !=null && o.address.Contains(q.address?.Trim()));
|
|
//if (q.num.HasValue && q.num.Value>0)
|
|
// qry = qry.Where(o => o.num==q.num.Value);
|
|
if (q.ept_self.HasValue && q.ept_self.Value )//排除自己
|
|
{
|
|
qry = qry.Where(o => o.num != q.num.Value);
|
|
}
|
|
if (!string.IsNullOrEmpty(q.country))
|
|
qry = qry.Where(o => o.country== q.country);
|
|
if (!string.IsNullOrEmpty(q.country2))
|
|
{
|
|
if (q.country2 == "1")
|
|
{
|
|
qry = qry.Where(o => o.country == "158");
|
|
}else if (q.country2 == "2")
|
|
{
|
|
qry = qry.Where(o => o.country != "158");
|
|
|
|
}
|
|
}
|
|
|
|
|
|
if (sortBy.Equals("f_number"))
|
|
{
|
|
if (sortDesc)
|
|
qry = qry.OrderByDescending(o => o.f_number);
|
|
else
|
|
qry = qry.OrderBy(o => o.f_number);
|
|
}
|
|
else if (sortBy.Equals("u_name"))
|
|
{
|
|
if (sortDesc)
|
|
qry = qry.OrderByDescending(o => o.u_name);
|
|
else
|
|
qry = qry.OrderBy(o => o.u_name);
|
|
}
|
|
else if (sortBy.Equals("identity_type_desc"))
|
|
{
|
|
if (sortDesc)
|
|
qry = qry.OrderByDescending(o => o.identity_type);
|
|
else
|
|
qry = qry.OrderBy(o => o.identity_type);
|
|
}
|
|
else if (sortBy.Equals("sex"))
|
|
{
|
|
if (sortDesc)
|
|
qry = qry.OrderByDescending(o => o.sex);
|
|
else
|
|
qry = qry.OrderBy(o => o.sex);
|
|
}
|
|
else if (sortBy.Equals("birthday"))
|
|
{
|
|
if (sortDesc)
|
|
qry = qry.OrderByDescending(o => o.birthday);
|
|
else
|
|
qry = qry.OrderBy(o => o.birthday);
|
|
}
|
|
else
|
|
qry = qry.OrderByDescending(o => o.num);
|
|
|
|
MyWeb.encrypt encrypt = new MyWeb.encrypt();
|
|
|
|
var tdesc = publicFun.enum_desc<Model.follower.type>();
|
|
var count = qry.Count(); //pageSize = count;//一次取回??
|
|
var ret = new
|
|
{
|
|
list = qry.ToPagedList(page, pageSize).Select(x => new
|
|
{
|
|
num = x.num,
|
|
f_number = x.f_number,
|
|
u_name = x.u_name,
|
|
sex = x.sex,
|
|
birthday = x.birthday, //?.ToString("yyyy/MM/dd"),
|
|
birthday2 = publicFun.chagenDate(x.birthday), //?.ToString("yyyy/MM/dd"),
|
|
sign = Model.follower.chagenSign(x.birthday), //NULL??
|
|
sexagenary = Model.follower.sexagenary(x.birthday),
|
|
identity_type = x.identity_type,
|
|
//identity_type_string = Enum.GetName( typeof(Model.follower.type), x.identity_type),
|
|
//identity_type_string1 = ((Model.follower.type)(x.identity_type??0)).ToString(),
|
|
identity_type_desc = tdesc[x.identity_type ?? 1] ,//TryGetValue..
|
|
|
|
phone = x.phone,
|
|
phoneDes = encrypt.DecryptAutoKey(x.phone), //--MyWeb.function X
|
|
refugedate=x.refugedate,
|
|
refuge_name = x.refuge_name,
|
|
email = x.email,
|
|
address = x.address,
|
|
cellphone = x.cellphone,
|
|
cellphoneDes = encrypt.DecryptAutoKey(x.cellphone),
|
|
|
|
}),
|
|
count = count
|
|
|
|
};
|
|
|
|
|
|
|
|
/* SQL:
|
|
SELECT
|
|
[Extent1].[num] AS [num],
|
|
[Extent1].[f_number] AS [f_number],
|
|
[Extent1].[u_name] AS [u_name],
|
|
[Extent1].[sex] AS [sex],
|
|
[Extent1].[identity_type] AS [identity_type],
|
|
[Extent1].[birthday] AS [birthday],
|
|
[Extent1].[phone] AS [phone],
|
|
[Extent1].[email] AS [email],
|
|
[Extent1].[refugedate] AS [refugedate],
|
|
[Extent1].[refuge_name] AS [refuge_name],
|
|
[Extent1].[address] AS [address],
|
|
[Extent1].[demo] AS [demo],
|
|
[Extent1].[nation] AS [nation],
|
|
[Extent1].[leader] AS [leader]
|
|
FROM [dbo].[followers] AS [Extent1]
|
|
|
|
*/
|
|
//LINQ查詢必需要寫成: 能轉成SQL指令的查詢, 故小心呼叫自訂函數(或無法)
|
|
//要學會用原生的寫法, 新式的寫法, 東西都往 MyWeb.function 裡塞, 是錯的, 要思考其合理性
|
|
//API應該儘量提供資料而不是"格式"
|
|
//日期轉字串: 如要用VUE做, 傳回date而不要tostring, 用filter + moment.js做
|
|
|
|
if (ret.list == null) throw new HttpResponseException(HttpStatusCode.NotFound);
|
|
return Ok(ret);
|
|
}
|
|
|
|
/*
|
|
write a post action: checkHashFollower
|
|
input: phone, idcode
|
|
pass to encrypt.cs: followerHash, get hash
|
|
query db: followers where follower_hash==hash to follower
|
|
output: follower (or null)
|
|
*/
|
|
|
|
[HttpPost]
|
|
[Route("api/follower/GetFamilyList")]
|
|
public IHttpActionResult GetFamilyList([FromBody] Model.ViewModel.follower q,
|
|
int page, int pageSize = 10, string sortBy = "", bool sortDesc = false)
|
|
{
|
|
int _follower = q.num.HasValue && q.num.Value > 0 ? q.num.Value : 0;
|
|
if (_follower > 0)
|
|
{
|
|
//家族 : 家長是我的人,跟我同家長的人,我的家長本人,我本人
|
|
//var cc = _db.followers.AsEnumerable().Where(x => x.num == 103 || x.leader == 103).Select(x => x.num);
|
|
//var aa = _db.followers.Where(x => x.num == 103 || x.leader == 103).Select(x => x.num);
|
|
//var bb = _db.followers.Where(i => aa.Any(x => x == i.num) || aa.Any(x => x == i.leader)).ToList();
|
|
|
|
int myLeader = _db.followers.Where(x => x.num == _follower).Select(x => x.leader??0).FirstOrDefault(); //我的家長
|
|
|
|
var cc = _db.followers.Where(x => x.num == _follower || x.leader == _follower).Select(x => x.num);
|
|
|
|
//var qry =
|
|
//from c in foDt
|
|
//where c.leader == _follower ||
|
|
// ((from o in foDt
|
|
// where o.num == _follower
|
|
// select o.leader).Contains(c.leader) && c.leader != null) ||
|
|
// (from o in foDt
|
|
// where o.num == _follower
|
|
// select o.leader).Contains(c.num) ||
|
|
// c.num == _follower
|
|
//select c;
|
|
|
|
if (q.ept_self.HasValue && q.ept_self.Value) //排除自己
|
|
{
|
|
//qry =
|
|
//from c in foDt
|
|
//where c.leader == _follower ||
|
|
// ((from o in foDt
|
|
// where o.num == _follower
|
|
// select o.leader).Contains(c.leader) && c.leader != null)
|
|
// && c.num != _follower
|
|
//select c;
|
|
|
|
if (myLeader > 0)//有家長
|
|
{
|
|
//跟我同家長的人
|
|
cc = _db.followers.Where(x => x.num != _follower && (x.leader == _follower || x.leader == myLeader)).Select(x => x.num);
|
|
}
|
|
else
|
|
{
|
|
cc = _db.followers.Where(x => x.num != _follower && x.leader == _follower).Select(x => x.num);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
//int ccc = cc.Count();
|
|
|
|
|
|
|
|
var qry = _db.followers.AsEnumerable().Where(f => cc.Any(x => x == f.num) || cc.Any(x => x == f.leader));
|
|
|
|
|
|
|
|
if (!string.IsNullOrEmpty(q.f_number))
|
|
qry = qry.Where(o => o.f_number.Contains(q.f_number.Trim()));
|
|
if (!string.IsNullOrEmpty(q.u_name))
|
|
qry = qry.Where(o => o.u_name.Contains(q.u_name.Trim()));
|
|
if (q.birthday.HasValue)
|
|
qry = qry.Where(o => o.birthday >= q.birthday.Value);
|
|
if (q.birthday2.HasValue)
|
|
qry = qry.Where(o => o.birthday < Convert.ToDateTime(q.birthday2.Value).AddDays(1));
|
|
if (!string.IsNullOrEmpty(q.address))
|
|
qry = qry.Where(o => o.address.Contains(q.address.Trim()));
|
|
|
|
qry = qry.OrderByDescending(o => o.num);
|
|
MyWeb.encrypt encrypt = new MyWeb.encrypt();
|
|
var tdesc = publicFun.enum_desc<Model.follower.type>();
|
|
int i = 1;
|
|
var count = qry.Count(); //pageSize = count;//一次取回??
|
|
var ret = new
|
|
{
|
|
list = qry.ToPagedList(page, pageSize).Select(x => new
|
|
{
|
|
id = i++,
|
|
num = x.num,
|
|
f_number = x.f_number,
|
|
u_name = x.u_name,
|
|
address = x.address,
|
|
birthday = x.birthday,
|
|
phone = x.phone,
|
|
phoneDes = encrypt.DecryptAutoKey(x.phone),
|
|
demo = x.demo,
|
|
identity_type_desc = tdesc[x.identity_type ?? 1],
|
|
f_num_selected = new
|
|
{
|
|
text = x.u_name,
|
|
val = x.num,
|
|
},
|
|
//data_tmp = new //tmp 暫存用
|
|
//{
|
|
// f_num_selected = new
|
|
// {
|
|
// text = x.u_name,
|
|
// val = x.num,
|
|
// },
|
|
// identity_type_desc = tdesc[x.identity_type ?? 1],
|
|
// birthday = x.birthday,
|
|
// phoneDes = encrypt.DecryptAutoKey(x.phone),
|
|
// demo = x.demo,
|
|
//},
|
|
appellation_id_selected = new
|
|
{
|
|
text = x.appellation?.title,
|
|
val = x.appellation_id,
|
|
},
|
|
|
|
}),
|
|
count = count
|
|
|
|
};
|
|
|
|
if (ret.list == null) throw new HttpResponseException(HttpStatusCode.NotFound);
|
|
return Ok(ret);
|
|
}
|
|
else
|
|
{
|
|
return Ok("此訂單沒有姓名/名稱");
|
|
}
|
|
|
|
}
|
|
|
|
[HttpPost]
|
|
[Route("api/follower/familySave")]
|
|
public IHttpActionResult SaveDetailData([FromBody] Model.ViewModel.follower item)
|
|
{
|
|
if (item.leader.HasValue && item.leader.Value > 0 && item.f_num.HasValue && item.f_num.Value > 0)
|
|
{
|
|
if (item.num.HasValue && item.num.Value > 0)
|
|
{
|
|
//原先就有設定家長 , -> 家人 :不變 or 變更
|
|
if (item.num.Value == item.f_num.Value)
|
|
{
|
|
//變更其家人稱謂
|
|
Model.follower _data = _db.followers.Where(q => q.num == item.f_num.Value).FirstOrDefault();//修改
|
|
if (_data != null)
|
|
{
|
|
_data.appellation_id = item.appellation_id.Value;
|
|
_db.SaveChanges();
|
|
var ret = _data.num;
|
|
return Ok(ret);
|
|
}
|
|
else
|
|
return NotFound();
|
|
}
|
|
else
|
|
{
|
|
//移除原先的家長設定
|
|
Model.follower _data2 = _db.followers.Where(q => q.num == item.num.Value).FirstOrDefault();//修改
|
|
if (_data2 != null)
|
|
{
|
|
_data2.leader = null;
|
|
_data2.appellation_id = null;
|
|
_db.SaveChanges();
|
|
}
|
|
|
|
//變更其家長設定
|
|
Model.follower _data = _db.followers.Where(q => q.num == item.f_num.Value).FirstOrDefault();//修改
|
|
if (_data != null)
|
|
{
|
|
_data.leader = item.leader.Value;
|
|
_data.appellation_id = item.appellation_id.Value;
|
|
_db.SaveChanges();
|
|
var ret = _data.num;
|
|
return Ok(ret);
|
|
}
|
|
else
|
|
return NotFound();
|
|
}
|
|
}
|
|
else
|
|
{
|
|
//新增家人
|
|
//變更其家長設定
|
|
Model.follower _data = _db.followers.Where(q => q.num == item.f_num.Value).FirstOrDefault();//修改
|
|
if (_data != null)
|
|
{
|
|
_data.leader = item.leader.Value;
|
|
_data.appellation_id = item.appellation_id.Value;
|
|
_db.SaveChanges();
|
|
|
|
var ret = _data.num;
|
|
return Ok(ret);
|
|
}
|
|
else
|
|
return NotFound();
|
|
|
|
}
|
|
}
|
|
else
|
|
{
|
|
return NotFound();
|
|
}
|
|
|
|
}
|
|
|
|
|
|
[HttpPost]
|
|
[Route("api/follower/familyDelete")]
|
|
public IHttpActionResult familyDelete([FromBody] Model.ViewModel.follower item)
|
|
{
|
|
if (item.leader.HasValue && item.leader.Value > 0 && item.num.HasValue && item.num.Value > 0)
|
|
{
|
|
//移除原先的家長設定
|
|
Model.follower _data2 = _db.followers.Where(q => q.num == item.num.Value).FirstOrDefault();//修改
|
|
if (_data2 != null)
|
|
{
|
|
_data2.leader = null;
|
|
_db.SaveChanges();
|
|
return Ok();
|
|
}
|
|
else
|
|
return NotFound();
|
|
|
|
}
|
|
else
|
|
{
|
|
return NotFound();
|
|
}
|
|
|
|
}
|
|
|
|
|
|
[HttpPost]
|
|
[Route("api/follower/GetTabletList")]
|
|
public IHttpActionResult GetTabletList([FromBody] Model.follower q,
|
|
int page, int pageSize = 10, string sortBy = "", bool sortDesc = false)
|
|
{
|
|
int _follower = q.num;
|
|
pageSize = (pageSize < 0) ? 0 : pageSize;
|
|
if (_follower > 0)
|
|
{
|
|
|
|
var qry = _db.followers_tablet.AsEnumerable().Where(x=>( x.f_num??0) == _follower);
|
|
qry = qry.OrderByDescending(o => o.num);
|
|
var count = qry.Count(); //pageSize = count;//一次取回??
|
|
int i = 1;
|
|
var ret = new
|
|
{
|
|
list = qry.ToPagedList(page, pageSize).Select(x => new
|
|
{
|
|
id = i++,
|
|
num = x.num,
|
|
f_num = x.f_num,
|
|
type = x.type,
|
|
title = x.title,
|
|
}),
|
|
count = count
|
|
|
|
};
|
|
|
|
if (ret.list == null) throw new HttpResponseException(HttpStatusCode.NotFound);
|
|
|
|
return Ok(ret);
|
|
|
|
}
|
|
|
|
return NotFound();
|
|
|
|
|
|
}
|
|
|
|
[HttpPost]
|
|
[Route("api/follower/tabletSave")]
|
|
public IHttpActionResult tabletSave([FromBody] Model.ViewModel.followers_tablet item)
|
|
{
|
|
if (item.num.HasValue && item.num.Value > 0)
|
|
{
|
|
//變更
|
|
Model.followers_tablet _data = _db.followers_tablet.Where(q => q.num == item.num.Value).FirstOrDefault();//修改
|
|
if (_data != null)
|
|
{
|
|
_data.type = item.type;
|
|
_data.title = item.title;
|
|
_db.SaveChanges();
|
|
var ret = _data.num;
|
|
return Ok(ret);
|
|
}
|
|
else
|
|
return NotFound();
|
|
|
|
}
|
|
else
|
|
{
|
|
//新增
|
|
Model.followers_tablet _data = new Model.followers_tablet();
|
|
_data.f_num = item.f_num;
|
|
_data.type = item.type;
|
|
_data.title = item.title;
|
|
_db.followers_tablet.Add(_data);
|
|
_db.SaveChanges();
|
|
var ret = _data.num;
|
|
return Ok(ret);
|
|
}
|
|
|
|
}
|
|
|
|
|
|
[HttpDelete]
|
|
[Route("api/follower/tabletDelete/{id}")]
|
|
public void tabletDelete(int id)
|
|
{
|
|
var prod = _db.followers_tablet.AsEnumerable().Where(q => q.num == id).FirstOrDefault(); //刪除該筆資料
|
|
if (prod != null)
|
|
{
|
|
_db.followers_tablet.Remove(prod);
|
|
_db.SaveChanges();//執行
|
|
|
|
}
|
|
}
|
|
|
|
[HttpPost]
|
|
[Route("api/follower/checkHashFollower")]
|
|
public IHttpActionResult CheckHashFollower([FromBody] dynamic request)
|
|
{
|
|
if (request == null || request.phone == null || request.id_code == null)
|
|
{
|
|
return BadRequest("Invalid input");
|
|
}
|
|
|
|
string phone = request.phone;
|
|
string id_code = request.id_code;
|
|
|
|
// Pass phone and idcode to encrypt.cs to get the followerHash
|
|
encrypt enc = new encrypt();
|
|
string followerHash = enc.followerHash(phone, id_code);
|
|
|
|
// Query the database for followers where follower_hash == followerHash
|
|
var follower = _db.followers.FirstOrDefault(f => f.follower_hash == followerHash);
|
|
|
|
// Return the follower or null
|
|
return Ok(follower);
|
|
}
|
|
[HttpPost]
|
|
[Route("api/follower/orderrecord")]
|
|
public IHttpActionResult GetOrderRecord(int id = 0)
|
|
{
|
|
//獲取信眾報名活動記錄
|
|
if (id == 0)
|
|
{
|
|
return Ok();
|
|
}
|
|
var orderrecord = _db.pro_order.Where(x => x.f_num == id).Include(x => x.pro_order_detail).Include(x => x.follower).ToList();
|
|
var data = new
|
|
{
|
|
list = orderrecord.Select(x => new
|
|
{
|
|
orderno = x.order_no,
|
|
startdate = x.reg_time,
|
|
endtime = x.up_time,
|
|
pwcount = x.pro_order_detail.Where(a => a.actItem.act_bom.Where(b => b.item_num == a.actItem_num && b.package_num == null).Count() == 0).Count(),
|
|
amount = x.pro_order_detail.Select(o => (float?)o.price).Sum(),
|
|
activityname = x.activity.subject,
|
|
category = x.activity.activity_category_kind.kind,
|
|
order_item = x.pro_order_detail.Where(b => b.parent_num == null).Select(c => c.actItem.subject).Distinct().ToList(),
|
|
})
|
|
};
|
|
return Ok(data);
|
|
}
|
|
[HttpPost]
|
|
[Route("api/follower/totalorderamount")]
|
|
public IHttpActionResult GetTotalOrderCount(int id)
|
|
{
|
|
//獲取信眾的報名次數和報名總功德金
|
|
var orderList = _db.pro_order.Where(x => x.f_num == id).Select(x => x.order_no).ToList();
|
|
var totalprice = _db.pro_order_detail.Where(d => orderList.Contains(d.order_no)).Sum(d => (float?)d.price) ?? 0;
|
|
/*var totalPrice = (from d in _db.pro_order_detail
|
|
join o in _db.pro_order on d.order_no equals o.order_no
|
|
where o.f_num == id
|
|
select d.price).Sum();*/
|
|
var activityTimes = _db.pro_order.Where(x => x.f_num == id).Count();
|
|
return Ok(new { totalamount = totalprice, activity_times = activityTimes });
|
|
}
|
|
[HttpPost]
|
|
[Route("api/follower/orderreordpwlist")]
|
|
public IHttpActionResult GetPwList([FromUri] string orderno)
|
|
{
|
|
if (string.IsNullOrEmpty(orderno))
|
|
{
|
|
return Ok();
|
|
}
|
|
var pwlist = _db.pro_order_detail.Where(x => x.order_no == orderno).OrderBy(k => k.actItem_num).ToList();
|
|
var data = new
|
|
{
|
|
list = pwlist.Select(j => new
|
|
{
|
|
id = j.num,
|
|
orderno = j.order_no,
|
|
printid = j.print_id,
|
|
price = j.price,
|
|
pwname = j.actItem.subject,
|
|
})
|
|
};
|
|
return Ok(data);
|
|
}
|
|
}
|
|
|