private void setWeekStart()
        {
            var usr = LoginHelper.GetLoggedInUser().User;

            while (ScheduleDate.DayOfWeek != (DayOfWeek)usr.Company.WeekStart.GetValueOrDefault())
            {
                ScheduleDate = ScheduleDate.AddDays(-1);
            }
        }
Пример #2
0
        //called by the system once a minute when a payment should be attempted
        public BillPayResultBag doScheduledPayment()
        {
            if (Blocked)
            {
                return(new BillPayResultBag(ScheduledBillPayResult.BLOCKED));
            }
            ModifyDate   = roundDown(ModifyDate);
            ScheduleDate = roundDown(ScheduleDate);
            var now = roundDown(DateTime.Now);

            if (ScheduleDate > now)
            {
                return(new BillPayResultBag(ScheduledBillPayResult.OK_NOT_PAID));
            }

            DateTime nextDue = ScheduleDate.AddDays(0);

            switch (Period)
            {
            case BillingPeriod.Minutes:
                nextDue = now;
                break;

            case BillingPeriod.Annually:
                while (nextDue < now)
                {
                    nextDue = nextDue.AddYears(1);
                }
                break;

            case BillingPeriod.Quarterly:
                while (nextDue < now)
                {
                    nextDue = nextDue.AddMonths(3);
                }
                break;

            case BillingPeriod.Once_Off:
                break;
            }

            if (nextDue != now)
            {
                return(new BillPayResultBag(ScheduledBillPayResult.OK_NOT_PAID));
            }

            Transaction transaction;

            //attempt payment
            if (Account.Balance - Amount < Account.minimumBalance())
            {
                transaction = new Transaction
                {
                    TransactionType = TransactionType.BillPay,
                    AccountId       = AccountId,
                    Amount          = 0,
                    TransactionTime = DateTime.Now,
                    //hijack unused comment field to store amount to display in the error message
                    Comment = Amount.ToString()
                };
                return(new BillPayResultBag(
                           ScheduledBillPayResult.FAIL_NOT_ENOUGH,
                           transaction
                           ));
            }

            //commit payment
            transaction = new Transaction
            {
                TransactionType = TransactionType.BillPay,
                AccountId       = AccountId,
                Amount          = Amount,
                TransactionTime = DateTime.Now
            };


            ModifyDate       = DateTime.Now;
            Account.Balance -= Amount;
            return(new BillPayResultBag(
                       ScheduledBillPayResult.OK_PAID,
                       transaction
                       ));
        }
        public override async System.Threading.Tasks.Task ExecuteLoadSchedulesCommand()
        {
            await runTask(async() =>
            {
                if (!Users.Any())
                {
                    Users.Add(new User()
                    {
                        FirstName = "(All)", UserId = _allGuid
                    });
                    Users.Add(new User()
                    {
                        FirstName = "(Unassigned)", UserId = _unassignedGuid
                    });
                    Users.Add(new User()
                    {
                        FirstName = "(Assigned)", UserId = _assignedGuid
                    });
                    var lookups = await DataService.GetLookups(4);
                    lookups.Users.ForEach(u => Users.Add(u));

                    Shifts.Add(new Shift()
                    {
                        ShiftName = "(All)", ShiftId = _allGuid
                    });
                    lookups.Shifts.ForEach(s => Shifts.Add(s));

                    Tasks.Add(new Task()
                    {
                        TaskName = "(All)", TaskId = _allGuid
                    });
                    lookups.Tasks.ForEach(t => Tasks.Add(t));
                }

                Schedules.Clear();
                var items            = await DataService.GetItemsAsync <Schedule>($"schedules?start={ScheduleDate.ToString("MM-dd-yyyy")}&end={ScheduleDate.AddDays(6).ToString("MM-dd-yyyy")}");
                NoSchedules          = !items.Data.Any();
                this.WeekUnpublished = false;
                foreach (var item in items.Data.OrderBy(d => d.ScheduleDateValue).ThenBy(d => d.StartTimeValue).ThenBy(d => d.User == null ? "aaaaaaa" : d.User.FirstName))
                {
                    if (item.UserId != null && !item.PublishedValue)
                    {
                        this.WeekUnpublished = true;
                    }
                    _weekSchedules = items.Data;
                    if (SelectedUser != null && SelectedUser.UserIdValue != _allGuid)
                    {
                        if (SelectedUser.UserIdValue == _unassignedGuid && item.User != null)
                        {
                            continue;
                        }
                        if (SelectedUser.UserIdValue == _assignedGuid && item.User == null)
                        {
                            continue;
                        }
                        if (SelectedUser.UserIdValue != _assignedGuid && SelectedUser.UserIdValue != _unassignedGuid && SelectedUser.UserIdValue != item.UserIdValue)
                        {
                            continue;
                        }
                    }

                    if (SelectedShift != null && SelectedShift.ShiftIdValue != _allGuid && SelectedShift.ShiftIdValue != item.ShiftIdValue)
                    {
                        continue;
                    }

                    if (SelectedTask != null && SelectedTask.TaskIdValue != _allGuid && SelectedTask.TaskIdValue != item.TaskIdValue)
                    {
                        continue;
                    }

                    var displayItem = new DisplayItem();
                    scheduleToDisplayItem(displayItem, item);
                    Schedules.Add(displayItem);
                }
                OnPropertyChanged("WeekUnpublished");

                return(items);
            });

            OnPropertyChanged("NoSchedules");
        }