Example #1
0
        private static IList <BillUserGroupDebitor> GetDebitors(IList <BillUserGroupDebitorDto> debitors, User creator)
        {
            Dictionary <UserGroupMembership, List <BillUserGroupDebitorDto> > debitorsByMembership =
                debitors.GroupBy(dto => dto.UserGroupMembership).ToDictionary(g => g.Key, g => g.ToList());

            IList <BillUserGroupDebitor> debitorEntities = new List <BillUserGroupDebitor>();

            foreach (UserGroupMembership userGroupMembership in debitorsByMembership.Keys)
            {
                BillAcceptState billAcceptState;
                if (creator.Equals(userGroupMembership.User))
                {
                    /*Wenn ich selber die Rechnung erstelle, kann ich die auch gleich akzeptieren*/
                    billAcceptState = BillAcceptState.Accepted;
                }
                else
                {
                    /*Die anderen müssen die Rechnung explizit akzeptieren.*/
                    billAcceptState = BillAcceptState.Pending;
                }
                BillUserGroupDebitor billUserGroupDebitor = new BillUserGroupDebitor(userGroupMembership,
                                                                                     debitorsByMembership[userGroupMembership].Sum(dto => dto.Portion),
                                                                                     billAcceptState);
                debitorEntities.Add(billUserGroupDebitor);
            }
            return(debitorEntities);
        }
Example #2
0
        public void DeclineBill(Bill bill, User debitor, string refuseComment, User user, string billUrl)
        {
            Require.NotNull(bill, "bill");
            Require.NotNull(debitor, "debitor");
            Require.NotNullOrWhiteSpace(refuseComment, "refuseComment");
            Require.NotNullOrWhiteSpace(billUrl, "billUrl");

            BillAcceptState?billAcceptState = bill.GetDebitorState(debitor);

            if (billAcceptState != null && billAcceptState != BillAcceptState.Refused)
            {
                BillUserGroupDebitor rejectingDebitor = bill.RefuseByDebitor(debitor, refuseComment, new EntityChangedDto(user, DateTime.Now));
                if (rejectingDebitor != null)
                {
                    NotificationService.SendBillDeclinedNotification(bill, rejectingDebitor, billUrl);
                }
            }
        }
Example #3
0
        public void SendBillDeclinedNotification(Bill bill, BillUserGroupDebitor decliningDebitor, string billUrl)
        {
            Require.NotNull(bill, "bill");
            Require.NotNull(decliningDebitor, "decliningDebitor");

            if (bill.Creditor.User.NotifyMeAsCreditorOnDeclinedBills)
            {
                string   userEmail = bill.Creditor.User.Email;
                ModelMap modelMap  = new ModelMap();
                modelMap.Add("creditor", bill.Creditor.User);
                modelMap.Add("debitor", decliningDebitor.UserGroupMembership.User);
                modelMap.Add("userGroupDebitor", decliningDebitor);
                modelMap.Add("bill", bill);
                modelMap.Add("billUrl", billUrl);
                MailMessage mailMessage = EmailService.CreateMailMessage(userEmail, modelMap, "BillDeclined");
                EmailService.SendMessage(mailMessage);
            }
        }