Click here to Skip to main content
Click here to Skip to main content
Go to top

Pay Ontime

, 4 Sep 2013
Rate this:
Please Sign up or sign in to vote.
Pay Ontime organizes all the payments in one place and keep tracks of paid history. This app can be useful to avoid late payments and fees

Please note

This article is an entry in our AppInnovation Contest. Articles in this sub-section are not required to be full articles so care should be taken when voting.

Introduction 

Pay Ontime is a payment organizer app to consolidate all payment dues in one place and will provide history of paid history.   

This App will be on Tablet Platform-Finance category and will be made available in both Desktop and Tablet mode.  

Background  

I have an existing application on Windows Phone 8 and Blackberry App world store and like to migrate to Native Windows 8 App to leverage the native capabilities of Windows 8 with additional features.  

http://www.windowsphone.com/en-us/store/app/pay-ontime/e962612d-d7ce-42b2-b871-eeee95fc667f  

http://appworld.blackberry.com/webstore/content/30540890/   ( I am still working on enhancing this app)

Features  

  • Add Payment dues 
  • Payment due notification/reminders
  • Live tiles  
  • Charm Bar, Search Integration  
  • Paid history chart and trend analysis
  • Late payment warning, track record.   
  • Multi Device support with cloud synchronization
  • Available in both Desktop Mode and Windows 8.

Points of Interest  

Data synchronization and automatic conflict resolving with latest time-stamp using C# and Restful client. 

Screenshots

 

 

 


Technical Aspect

  • Visual Studio 2012 as IDE  
  • C#, XAML will be used for Coding for UI and UI Interaction. 
  • C# Portable libraries (Model, View Model) will be developed to reuse on both Desktop and Widows 8 App. 
  • SQLite will be used to store the data on local device  
  • StackMob along with Restful client API will be used for cloud synchronization. 

Development Approach  

This application will be developed using Model UI following the implementation of http://metrobackup.codeplex.com/ and event based component binding (http://ebcbinder.codeplex.com/) for seamless navigation.   

 Still UI work is in progress and will share screenshots once app pages made available.

using System.Windows.Input;
using System.Collections.ObjectModel;
using PayOntime.UI.Common;
using PayOntime.UI.Model;

namespace PayOntime.UI.ViewModels
{
    public class DueViewModel : ViewModelBase
    {
        private DueModel _model;
        private ObservableCollection<DueModel> _items;
        private ICommand _SubmitCommand;
        private ICommand _DeleteCommand;

        public DueModel Model
        {
             get
            {
                return _model;
            }
             set
            {
                _model = value;
                OnPropertyChanged("Model");
            }
        }
        public ObservableCollection<DueModel> Items
        {
            get
            {
                return _items;
            }
            private set
            {
                _items = value;
                OnPropertyChanged("Items");
            }
        }

        public IFlowCommand AddNewCommand { get; private set; }

        public ICommand SubmitCommand
        {
            get
            {
                if (_DeleteCommand == null)
                {
                    _DeleteCommand = new RelayCommand(param => this.Submit(), null);
                }
                return _DeleteCommand;
            }
        }

        public ICommand DeleteCommand
        {
            get
            {
                if (_SubmitCommand == null)
                {
                    _SubmitCommand = new RelayCommand(param => this.Submit(), null);
                }
                return _SubmitCommand;
            }
        }

        public DueViewModel()
        {
            this.AddNewCommand = new FlowCommand( o => true == true );
            Model = new DueModel();

            Items = new ObservableCollection<DueModel>();
            Items.Add(new DueModel { Name = "Make Auto loan payment" });
            Items.Add(new DueModel { Name = "Make BOC credit card payment" });
            Items.CollectionChanged += new System.Collections.Specialized.NotifyCollectionChangedEventHandler(Items_CollectionChanged);
        }

        void Items_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
        {
            OnPropertyChanged("Items");
        }

        private void Submit()
        {
            Items.Add(Model); // Invoke DB wrapper
            Model = new DueModel();
        }

        private void Delete()
        {
            Items.Add(Model); // Invoke DB wrapper
            Model = new DueModel();
        }
    }
}

History    

  • 1.0 Initial idea submitted. 
  • 1.1 Updated with Technical Aspect.  
  • 1.2 Category updated  
  • 1.3 Development approach updated

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

Share

About the Author

Govindk-22
Software Developer (Senior) Citi
United States United States
I have 10+ years of enterprise application development in financial industry mostly worked on Microsoft technologies starting from VB, ASP, and early adopter of .NET.
 
Proficient in C#, ASP.NET, MVC, SQL, HTML5, JavaScript, JQuery, Backbone JS, Knockout JS, NoSql, SqlLite, Jquery Mobile, Cordava.
 
Familiar with App development on Windows, Windows Phone and Blackberry platforms.
Follow on   Twitter

Comments and Discussions

 
QuestionHow's app development going? Will you be submitting on time? PinstaffKevin Priddle22-Oct-13 10:49 
AdminThanks for entering! PinstaffKevin Priddle15-Aug-13 15:50 
GeneralRe: Thanks for entering! PinprofessionalGovindk-2216-Aug-13 5:56 
GeneralRe: Thanks for entering! PinstaffKevin Priddle21-Aug-13 6:14 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

| Advertise | Privacy | Mobile
Web04 | 2.8.140922.1 | Last Updated 4 Sep 2013
Article Copyright 2013 by Govindk-22
Everything else Copyright © CodeProject, 1999-2014
Terms of Service
Layout: fixed | fluid