示例#1
0
        public object GetYearlyBalanceReports()
        {
            List <ChartValue> chartValues = new List <ChartValue>();
            var balanceReports            = GetBalanceReports().OrderBy(x => x.Date);

            if (balanceReports.Count() != 0)
            {
                int startYear = GetBalanceReports().Min(x => x.Date).Year;

                for (int i = startYear; i <= DateTime.Now.Year; ++i)
                {
                    BalanceReport balanceReport = GetBalanceReports().Where(x => x.Date.Year == i).LastOrDefault();

                    ChartValue chartValue = new ChartValue
                    {
                        Name  = i.ToString(),
                        Value = balanceReport?.Balance ?? 0
                    };

                    chartValues.Add(chartValue);
                }
            }

            return(chartValues);
        }
示例#2
0
        public object GetTransfers(DataSourceLoadOptions loadOptions, int?key)
        {
            CheckRecurringTransfers();

            // If key is given, then filter transfers based on BalanceReport date.
            if (key != null)
            {
                BalanceReport balanceReport         = GetBalanceReports().Where(x => x.BalanceReportId == key).FirstOrDefault();
                BalanceReport previousBalanceReport = GetBalanceReports().OrderByDescending(x => x.Date).Where(y => y.Date < balanceReport.Date).FirstOrDefault();

                if (balanceReport != null)
                {
                    //TODO: (?/2) Future transfers can't be retrieved by key.
                    DateTime startDate = previousBalanceReport?.Date ?? DateTime.MinValue;
                    DateTime endDate   = balanceReport.Date;
                    IQueryable <Transfer> transfers = GetTransfers().Where(x => startDate < x.Date && x.Date <= endDate);
                    return(DataSourceLoader.Load(transfers, loadOptions));
                }
                else
                {
                    return(DataSourceLoader.Load(Enumerable.Empty <Transfer>().AsQueryable(), loadOptions));
                }
            }
            else
            {
                return(DataSourceLoader.Load(GetTransfers(), loadOptions));
            }
        }
示例#3
0
        public void TestFormattingOfBalanceReport()
        {
            const string season       = "2011";
            var          myTeamLister = new FakeTeamMetricsLister();
            var          br           = new BalanceReport {
                Season = season, TeamList = myTeamLister.GetTeams(season)
            };

            br.Render();
            Assert.IsTrue(true);
        }
示例#4
0
        private void HandleChangeUserAccountBalance(ChangeBalance message)
        {
            _events.Add(message);

            var balance        = CalculateBalance();
            var lastOperations = GetLastOperations();
            var response       = new BalanceReport(balance, lastOperations, message.UserId);

            Sender.Tell(response);
            _consoleWriter.WriteLine($"{_userId} balance change operation executed");
        }
示例#5
0
        public IActionResult CreateBalanceReport(string values)
        {
            BalanceReport balanceReport = new BalanceReport();

            JsonConvert.PopulateObject(values, balanceReport);

            if (TryValidateModel(balanceReport))
            {
                balanceReport.UserId = UserId;
                ApplicationDb.BalanceReports.Add(balanceReport);
                ApplicationDb.SaveChanges();
                return(Ok());
            }
            else
            {
                return(BadRequest(ModelState));
            }
        }
示例#6
0
        // TODO: In the future use correlation id
        public async Task Execute(TransactionCommand command)
        {
            var currentEvents  = (await bankTransactionEventStore.ReadAll(command.AccountId)).ToArray();
            var currentVersion = currentEvents.Length;
            var balance        = BalanceReport.GetBalance(currentEvents);

            TransactionEvent evt = command switch
            {
                DepositCommand deposit =>
                new Deposit(deposit.Amount, deposit.AccountId, DateTimeOffset.Now, deposit.CorrelationId),
                WithdrawalCommand withdrawal when balance >= withdrawal.Amount =>
                new Withdrawal(withdrawal.Amount, withdrawal.AccountId, DateTimeOffset.Now, withdrawal.CorrelationId),
                _ =>
                throw new ArgumentException()
            };

            await bankTransactionEventStore.Append(currentVersion, evt);
        }
    }
        public void HandleBalanceReportOutputsCorrectInformation()
        {
            //prepare
            var consoleMock = new Mock <IConsoleWriter>();
            var output      = string.Empty;

            consoleMock.Setup(x => x.WriteLine(It.IsAny <string>())).Callback((string x) => output = x);

            var actor   = ActorOfAsTestActorRef <UserBalanceActor>(Props.Create(() => new UserBalanceActor(consoleMock.Object, null)));
            var message = new BalanceReport(100, new List <double> {
                50, 50
            }, Guid.NewGuid());

            //execute
            actor.Tell(message);

            //assert
            consoleMock.Verify(x => x.WriteLine(It.IsAny <string>()), Times.Once);
            Assert.Equal($"user {message.UserId} has balance '{message.CurrentBalance}' with last 5 operations: '{string.Join(", ", message.LastOperations)}'", output);
        }
示例#8
0
        public IActionResult UpdateBalanceReport(int key, string values)
        {
            BalanceReport balanceReport = GetBalanceReports().FirstOrDefault(x => x.BalanceReportId == key);
            int           id            = balanceReport.BalanceReportId;
            string        userId        = balanceReport.UserId;

            JsonConvert.PopulateObject(values, balanceReport);

            if (TryValidateModel(balanceReport))
            {
                balanceReport.BalanceReportId = id;
                balanceReport.UserId          = userId;
                ApplicationDb.BalanceReports.Update(balanceReport);
                ApplicationDb.SaveChanges();
                return(Ok());
            }
            else
            {
                return(BadRequest(ModelState));
            }
        }
        //Record the state of all accounts if the month has changed
        public async static Task<bool> RecordBalance(IBalanceReport balanceRepo, IAccountRepository accountRepo)
        {
            //created a variable to keep async bool returns, set it to false just in case the code doesnt work, will return false
            bool success = false;
            //I record onyl Crdit and Debit account balances because only their balances matter. 
            var accounts = await accountRepo.GetAccountByTwoTypes(AccountType.Credit, AccountType.Debit);
            //Because the record is happening in the new month any first day the app is accessed, but
            //the report needs to be for the end of the last month. So the date is last months date. 
            var lastMonthsDate = DateTime.Now.AddMonths(-1);

            foreach (var acc in accounts)
            {
                var balanceReport = new BalanceReport
                {
                    AccountId = acc.Id,
                    Date = lastMonthsDate,
                    Value = acc.Value
                };
                success = await balanceRepo.Create(balanceReport);
            }

            return success;
        }
示例#10
0
        public object GetMonthlyBalanceReports(int?year)
        {
            List <ChartValue> chartValues = new List <ChartValue>();

            year = year ?? DateTime.Now.Year;
            var balanceReports            = GetBalanceReports().Where(x => x.Date.Year == year).OrderBy(y => y.Date);
            DateTimeFormatInfo formatInfo = new DateTimeFormatInfo();

            for (int i = 1; i <= 12; ++i)
            {
                BalanceReport balanceReport = balanceReports.Where(x => x.Date.Month == i).LastOrDefault();
                string        monthName     = formatInfo.GetMonthName(i).ToString();

                ChartValue chartValue = new ChartValue
                {
                    Name  = monthName,
                    Value = balanceReport?.Balance ?? 0
                };

                chartValues.Add(chartValue);
            }

            return(chartValues);
        }
示例#11
0
 private void HandleBalanceReport(BalanceReport message)
 {
     _consoleWriter.WriteLine($"user {message.UserId} has balance '{message.CurrentBalance}' with last 5 operations: '{string.Join(", ",message.LastOperations)}'");
 }
示例#12
0
 public async Task <bool> Update(BalanceReport entity)
 {
     _db.BalanceReports.Update(entity);
     return(await Save());
 }
示例#13
0
 public async Task <bool> Delete(BalanceReport entity)
 {
     _db.BalanceReports.Remove(entity);
     return(await Save());
 }
示例#14
0
        public async Task <bool> Create(BalanceReport entity)
        {
            await _db.BalanceReports.AddAsync(entity);

            return(await Save());
        }
示例#15
0
        /// <summary>
        /// Loads a form to the panel
        /// </summary>
        /// <param name="tag">The tag of the button - Here is stored what type of form is supposed to be opened</param>
        private void LoadForm(string tag)
        {
            var yEnd = new YearEnd();

            if (yEnd.InventoryRequired(false))
            {
                switch (VisibilitySetting.HandleUnits)
                {
                case 1:
                    yEnd.GenerateAutomaticInventory();
                    break;

                case 2:
                    yEnd.GenerateAutomaticInventoryByUnit();
                    break;

                case 3:
                    yEnd.GenerateAutomaticInventoryByUnit();
                    break;
                }
            }

            Form frm;

            switch (tag)
            {
            case "Receives":
                frm = new ReceivingForm();
                AddTab("Receiving Form", frm);
                break;

            case "Issues":
                frm = new IssueForm();
                AddTab("Issue Form", frm);
                break;

            case "AMCs":
                frm = new AMCView();
                AddTab("AMC Report", frm);
                break;

            case "menuItemPriceOnlyReport":
                frm = new ItemPriceOnlyReport();
                AddTab("Item Price Only", frm);
                break;

            case "Facility Settings":
                frm = new Hospital();
                AddTab("Facility Settings", frm);
                break;

            case "Drug List":
                frm = new ManageItems();
                AddTab("Manage Drug List", frm);
                break;

            case "Supplies List":
                //frm = new ManageItems();
                frm = new ManageSupplies();
                AddTab("Manage Supplies List", frm);
                break;

            case "Item Consolidator":
                //frm = new ManageItems();
                frm = new ItemConsolidator();
                AddTab("Update Items List From The Directory Service", frm);
                break;

            case "Customize Druglist":
                frm = new CustomDrugList();
                AddTab("Customize Drug List", frm);
                break;

            case "System Settings":
                frm = new SystemSetting();
                AddTab("System Settings", frm);
                break;

            case "Facility Details":
                frm = new HospitalSettings();
                AddTab("Facility Details", frm);
                break;

            case "User Accounts":
                frm = new UserAccounts();
                AddTab("Manage Users", frm);
                break;

            case "Pipeline":
                frm = new Pipeline();
                AddTab("Pipeline", frm);
                break;

            case "Change Password":
                frm = new ChangePassword(UserId);
                AddTab("Change Password", frm);
                break;

            case "Transfer Log":
                frm = new LogTransfer();
                AddTab("Transfer Log", frm);
                break;


            case "VRF Form":
                frm = new vrfmainForm();
                AddTab("Vaccine Requistion and Report Form", frm);
                break;

            case "Losses/Adjustment":
                frm = new LossesAdjustment();
                AddTab("Losses and Adjustment", frm);
                break;

            case "Receive Log":
                frm = new LogReceive();
                AddTab("Receive Transaction Log", frm);
                break;

            case "Issue Log":
                frm = new LogIssues();
                AddTab("Issue Transaction Log", frm);
                break;

            case "Adjustment Log":
                frm = new LogAdjustment();
                AddTab("Loss / Adjustment Transaction Log", frm);
                break;

            case "Inventory Log":
                frm = new LogInventory();
                AddTab("Inventory Log", frm);
                break;

            case "Stock Status":
                frm = new ItemReport();
                AddTab("Stock Status", frm);
                break;

            case "Over Stocked":
                frm = new OtherItemReport("Over Stocked");
                AddTab("Over Stock Items", frm);
                break;

            case "Transfers":
                frm = new TransferForm();
                AddTab("Transfer Form", frm);
                break;

            case "Stock Out":
                frm = new OtherItemReport("Stock Out");
                AddTab("Stocked Out Items", frm);
                break;

            case "ConsumptionTrend":
                frm = new ConsumptionTrendReport();
                AddTab("Consumption Trend", frm);
                break;

            case "Issues By Receiving Unit":
                frm = new IssuesByDep();
                AddTab("Issues By Receiving Unit", frm);
                break;

            case "Expired Products":
                frm = new ExpiredProducts();
                AddTab("Expired Products", frm);
                break;

            case "Near Expiry":
                frm = new NearlyExpired();
                AddTab("Near Expiry Products", frm);
                break;

            case "SOH Trend":
                frm = new SOHTrend();
                AddTab("SOH Trend", frm);
                break;

            case "Receive Trend":
                frm = new ReceiveTrend();
                AddTab("Receive Trend", frm);
                break;

            case "Balance":
                frm = new BalanceReport();
                AddTab("Balance", frm);
                break;

            case "Summary Report":
                frm = new GeneralReport();
                AddTab("Summary Report", frm);
                break;

            case "Cost Summary":
                frm = new GeneralCostChart();
                AddTab("Cost Summary", frm);
                break;

            case "Wastage Rate":
                frm = new WastageRate();
                AddTab("Wastage Rate", frm);
                break;

            case "Summary Chart":
                frm = new GeneralChart();
                AddTab("General Chart", frm);
                break;

            case "Activity Log Reports":
                frm = new ActivityLogReports();
                AddTab("Activity Log", frm);
                break;

            case "ECLS":
                frm = new ECLS();
                AddTab("CS Stock Status", frm);
                break;

            case "Year End Process":
                frm = new YearEndProcess();
                AddTab("Inventory", frm);
                break;

            case "Default Year End Process":
                frm = new YearEndProcess(true);
                AddTab("Inventory", frm);
                break;

            case "Stock Expiry Status":
                frm = new GeneralExpiryChart();
                AddTab("Stock Status", frm);
                break;

            case "DataBase":
                frm = new DatabaseActions();
                AddTab("Database Actions", frm);
                break;

            case "PDA":
                frm = new ItemReport();
                AddTab("Stock Status", frm);
                break;

            case "Consumables List":
                frm = new ManageSupplies();
                AddTab("Supplies List", frm);
                break;

            case "RRF Form":
                frm = new RRFForm();
                AddTab("Report and Requisition Form", frm);
                break;

            case "LossReport":
                frm = new ExpiredProductsReport();
                AddTab("Loss / Adjustment Reporting View", frm);
                break;

            case "CostReport":
                frm = new CostReport();
                AddTab("Cost Report", frm);
                break;

            case "ConsumptionByUnit":
                frm = new ConsumptionByUnits();
                AddTab("Consumption By Dispensary Unit", frm);
                break;

            case "About":
                Program.ShowHCMISVersionInfoMessageBox();
                break;
            }
        }
示例#16
0
        public Task <BalanceReportModel> GetBalanceReportAsync()
        {
            BalanceReport balanceReport = _balanceReportService.Get();

            return(Task.FromResult(Mapper.Map <BalanceReportModel>(balanceReport)));
        }