public IHttpActionResult GetSpends(int id) { if (ModelState.IsValid) { using (HessappEntities ent = new HessappEntities()) { List <Spends> list = ent.Spends.Where(q => q.GroupID == id).Select(q => q).ToList(); ListSpendsResponseDTO model = new ListSpendsResponseDTO(); List <SpendListDTO> lst = new List <SpendListDTO>(); foreach (var item in list) { SpendListDTO dto = new SpendListDTO(); dto.GroupID = item.GroupID; dto.From = item.From; dto.TotalAmount = item.TotalAmount; dto.Description = item.Description; dto.Date = item.Date.Value.ToString("dd.MM.yyyy HH:mm"); lst.Add(dto); } model.spends = lst; if (model.spends != null) { return(Content(HttpStatusCode.OK, model)); } else { return(BadRequest()); } } } else { return(BadRequest()); } }
public IHttpActionResult GetGroupStatus(GetGroupStatusRequestDTO model) { if (ModelState.IsValid) { using (HessappEntities ent = new HessappEntities()) { // toplam borç var totalDebt = ent.Activity.Where(q => q.GroupID == model.groupId && q.Destination == model.nickname).Select(q => q.Amount).Sum(); // toplam alacak var totalCredit = ent.Activity.Where(q => q.GroupID == model.groupId && q.From == model.nickname).Select(q => q.Amount).Sum(); List <Debts> listDebts = (from q in ent.Activity where q.GroupID == model.groupId && q.Destination == model.nickname select new Debts { ActivityId = q.ActivityID, Amount = q.Amount, Description = q.Description, From = q.From }).ToList(); GetGroupStatusResponseDTO rsp = new GetGroupStatusResponseDTO(); rsp.totalCredit = totalCredit; rsp.totalDebt = totalDebt; rsp.listDebt = listDebts; return(Content(HttpStatusCode.OK, rsp)); } } else { return(BadRequest()); } }
public List <string> SplitParticipants(int groupId) { using (HessappEntities ent = new HessappEntities()) { var prt = ent.Group.Where(q => q.GroupID == groupId).Select(q => q.Participants).SingleOrDefault(); string[] split = prt.ToString().Split('/'); return(split.ToList()); } }
public IHttpActionResult Create(CreateSpendRequestDTO model) { if (ModelState.IsValid) { using (HessappEntities ent = new HessappEntities()) { // spend ekleme Spends spend = new Spends(); spend.From = model.from; spend.Description = model.description; spend.GroupID = model.groupId; spend.TotalAmount = model.totalAmount; spend.Date = DateTime.Now; ent.Spends.Add(spend); ent.SaveChanges(); // grup kişi sayısı bulma List <String> parts = SplitParticipants(model.groupId); // activity ekleme foreach (var item in parts) { if (!(item == model.from)) { Activity act = new Activity(); act.GroupID = model.groupId; act.From = model.from; act.Destination = item; act.Description = model.description; act.Date = spend.Date; act.Amount = model.totalAmount / parts.Count(); ent.Activity.Add(act); ent.SaveChanges(); } } CreateSpendResponseDTO rsp = new CreateSpendResponseDTO(); rsp.groupId = model.groupId; rsp.from = model.from; rsp.description = model.description; rsp.totalAmount = model.totalAmount; rsp.date = spend.Date.Value.ToString("dd.MM.yyyy HH:mm"); return(Content(HttpStatusCode.OK, rsp)); } } else { return(BadRequest()); } }
public IHttpActionResult Delete(GroupDeleteRequestDTO model) // moderator ise { if (ModelState.IsValid) { using (HessappEntities ent = new HessappEntities()) { var del = ent.Group.Find(model.groupId); GroupDeleteResponseDTO rsp = new GroupDeleteResponseDTO(); rsp.groupId = model.groupId; if (del == null) { return(NotFound()); } if (del.Moderator != model.nickname) { return(BadRequest()); } else { var act = ent.Activity.Where(q => q.GroupID == model.groupId).Select(q => q).ToList(); var spd = ent.Spends.Where(q => q.GroupID == model.groupId).Select(q => q).ToList(); if (act != null) { foreach (var item in act) { ent.Activity.Remove(item); } } if (spd != null) { foreach (var item in spd) { ent.Spends.Remove(item); } } } ent.Group.Remove(del); ent.SaveChanges(); return(Content(HttpStatusCode.OK, rsp)); } } else { return(BadRequest()); } }
public IHttpActionResult PayDebt(int id) { if (ModelState.IsValid) { using (HessappEntities ent = new HessappEntities()) { var del = ent.Activity.Find(id); PayDebtResponseDTO rsp = new PayDebtResponseDTO(); rsp.activityId = id; ent.Activity.Remove(del); ent.SaveChanges(); return(Content(HttpStatusCode.OK, rsp)); } } else { return(BadRequest()); } }
public IHttpActionResult ListGroups(ListGroupRequestDTO model) { if (ModelState.IsValid) { using (HessappEntities ent = new HessappEntities()) { List <ListGroupResponseDTO> list = (from p in ent.Group where p.Participants.Contains(model.nickname) select new ListGroupResponseDTO { groupID = p.GroupID, moderator = p.Moderator, description = p.Description, name = p.Name, }).ToList(); foreach (var item in list) { var grpId = item.groupID; List <Spends> spn = ent.Spends.Where(q => q.GroupID == grpId).Select(q => q).ToList(); item.spends = spn; item.participants = SplitParticipants(item.groupID); } if (list == null) { return(NotFound()); } else { GroupListGeneralResponseDTO grps = new GroupListGeneralResponseDTO(); grps.groups = list; return(Content(HttpStatusCode.OK, grps)); } } } else { return(BadRequest()); } }
public IHttpActionResult Create(CreateGroupRequestDTO model) { using (HessappEntities ent = new HessappEntities()) { if (ModelState.IsValid) { Group grp = new Group(); grp.Name = model.groupName; grp.Description = model.description; grp.Moderator = model.moderator; foreach (var item in model.participants) { int last = model.participants.LastIndexOf(item); if (last == model.participants.Count - 1) { grp.Participants += item; } else { grp.Participants += item + "/"; } } ent.Group.Add(grp); ent.SaveChanges(); CreateGroupResponseDTO rsp = new CreateGroupResponseDTO(); rsp.groupID = grp.GroupID; rsp.moderator = grp.Moderator; rsp.description = grp.Description; rsp.name = grp.Name; rsp.participants = SplitParticipants(grp.GroupID); return(Content(HttpStatusCode.OK, rsp)); } else { return(BadRequest()); } } }
public IHttpActionResult GetGeneralStatus(string id) { if (ModelState.IsValid) { using (HessappEntities ent = new HessappEntities()) { // grup bazında alacak listesi var credits = (from q in ent.Activity where q.From == id group q by new { q.GroupID, q.Date } into grp select new { grp.Key.GroupID, amount = grp.Select(q => q.Amount).FirstOrDefault() }).ToList(); List <GeneralStatus> listCredits = (from q in credits group q by new { q.GroupID } into grp select new GeneralStatus { groupId = grp.Key.GroupID, groupName = ent.Group.Where(q => q.GroupID == grp.Key.GroupID).Select(q => q.Name).SingleOrDefault(), totalCredit = grp.Sum(q => q.amount), totalDebt = 0 }).AsEnumerable().ToList(); // grup bazında borç listesi var dept = (from q in ent.Activity where q.Destination == id group q by new { q.GroupID, q.Date } into grp select new { grp.Key.GroupID, amount = grp.Select(q => q.Amount).Sum() }).ToList(); List <GeneralStatus> listDept = (from q in dept group q by new { q.GroupID } into grp select new GeneralStatus { groupId = grp.Key.GroupID, groupName = ent.Group.Where(q => q.GroupID == grp.Key.GroupID).Select(q => q.Name).SingleOrDefault(), totalDebt = grp.Sum(q => q.amount), totalCredit = 0 }).AsEnumerable().ToList(); // listelerin birleştirilmesi List <GeneralStatus> fullList = new List <GeneralStatus>(); foreach (var item in listCredits) { fullList.Add(item); } foreach (var item in listDept) { var find = fullList.Where(q => q.groupId == item.groupId).Select(q => q).ToList(); if (find.Count != 0) { foreach (var item1 in find) { item1.totalDebt = item.totalDebt; } } else { fullList.Add(item); } } GeneralStatusListDTO rsp = new GeneralStatusListDTO(); rsp.list = fullList; return(Content(HttpStatusCode.OK, rsp)); } } else { return(BadRequest()); } }