示例#1
0
 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());
     }
 }
示例#2
0
 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());
     }
 }
示例#3
0
 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());
     }
 }
示例#4
0
        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());
            }
        }
示例#5
0
        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());
            }
        }
示例#6
0
 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());
     }
 }
示例#7
0
 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());
     }
 }
示例#8
0
 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());
         }
     }
 }
示例#9
0
        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());
            }
        }