/// <summary>
 /// Intitalise multiple models and kick start oauth/sync
 /// </summary>
 /// <returns></returns>
 public ActionResult Index()
 {
     multiplemodels = new Multiplemodels();
     multiplemodels.SyncObjectsModel = new Syncdto();
     multiplemodels.OAuthorizationModel = new OAuthorizationdto();
     multiplemodels.TimeActivityModel = new TimeActivitydto();
     multiplemodels.IsReadySync = false;
     var oAuthModel = new OAuthService(multiplemodels.OAuthorizationModel).IsTokenAvailable(this);
     if (oAuthModel.IsConnected)
     {
         multiplemodels.IsReadySync = true;
         multiplemodels.OAuthorizationModel = oAuthModel;
         multiplemodels.IsConnected = oAuthModel.IsConnected;
         var syncService = new SyncService(oAuthModel);
         multiplemodels.SyncObjectsModel.OauthToken = oAuthModel;
         multiplemodels.SyncObjectsModel = syncService.IsEmpSync(multiplemodels.SyncObjectsModel, syncService);
         multiplemodels.SyncObjectsModel = syncService.IsCustSync(multiplemodels.SyncObjectsModel, syncService);
         multiplemodels.SyncObjectsModel = syncService.IsServiceItemSync(multiplemodels.SyncObjectsModel, syncService);
         multiplemodels.SyncObjectsModel.CompanyId = oAuthModel.Realmid;
         multiplemodels.SyncObjectsModel = syncRepo.Save(this, multiplemodels.SyncObjectsModel);
         multiplemodels.IsReadyTimeentry = multiplemodels.SyncObjectsModel.IsEmployeeSync || multiplemodels.SyncObjectsModel.IsCustomerSync || multiplemodels.SyncObjectsModel.IsServiceItemSync;
         multiplemodels.IsReadytoInvoice = false;
         return View(multiplemodels);
     }
     else
     {
         return View(multiplemodels);
     }
 }
 /// <summary>
 /// Http Redirect happend post oauth to close the connection.
 /// </summary>
 /// <returns></returns>
 public ActionResult Close()
 {
     multiplemodels = new Multiplemodels();
     multiplemodels.OAuthorizationModel = new OAuthorizationdto();
     multiplemodels.SyncObjectsModel = new Syncdto();
     multiplemodels.TimeActivityModel = new TimeActivitydto();
     return View(multiplemodels);
 }
 /// <summary>
 /// Initiate the sync operation and instantiate time activity
 /// </summary>
 /// <param name="id">identifier for repo</param>
 /// <param name="isConnected">oauth status</param>
 /// <returns></returns>
 public ActionResult Sync(int id, bool isConnected)
 {
     multiplemodels = new Multiplemodels();
     if (multiplemodels != null)
     {
         multiplemodels.SyncObjectsModel = new SyncRepository().Get(this, id);
         multiplemodels.OAuthorizationModel = new OAuthorizationdto();
         multiplemodels.OAuthorizationModel.IsConnected = isConnected;
         multiplemodels.TimeActivityModel = new TimeActivitydto();
         multiplemodels.IsReadyTimeentry = true;
         return View("Index", multiplemodels);
     }
     else
     {
         return View("Index");
     }
 }
 public ActionResult Load(Int64 id)
 {
     Syncdto syncDetails = id > 0 ? new SyncRepository().Get(this, id) : new Syncdto();
     timeActivity.oAuthTokens = syncDetails.OauthToken;
     timeActivity.Syncdto = syncDetails;
     timeActivity.EmployeeList = syncDetails.EmployeeList;
     timeActivity.CustomerList = syncDetails.CustomerList;
     timeActivity.ItemList = syncDetails.ItemList;
     timeActivityService = new TimeActivityService(timeActivity);
     timeActivity = timeActivityService.LoaddropdownList(timeActivity);
     timeActivity.CompanyId = timeActivity.oAuthTokens.Realmid;
     timeActivityRepository = new TimeActivityRepository();
     timeActivityRepository.Save(this, timeActivity);
     multiplemodels = new Multiplemodels();
     multiplemodels.TimeActivityModel = timeActivity;
     multiplemodels.SyncObjectsModel = syncDetails;
     multiplemodels.IsConnected = syncDetails.OauthToken.IsConnected;
     multiplemodels.IsReadytoInvoice = true;
     return View("TimeActivity", multiplemodels);
 }
 public ActionResult Load(Int64 id)
 {
     TimeActivitydto timeActivitydto = id > 0 ? new TimeActivityRepository().Get(this, id) : new TimeActivitydto();
     invoicedto.oAuthTokens = timeActivitydto.oAuthTokens;
     invoicedto.CustomerList = timeActivitydto.CustomerList;
     invoicedto.CompanyId = invoicedto.oAuthTokens.Realmid;
     invoicedto.ConnectionString = timeActivitydto.Syncdto.ConnectionString;
     invoicedto.TimeActivityDto = timeActivitydto;
     invoiceService = new InvoiceService(invoicedto);
     invoicedto = invoiceService.LoadPending(invoicedto);
     invoicedto = invoiceService.LoadInvoiced(invoicedto);
     invoiceRepository = new InvoiceRepository();
     invoicedto = invoiceRepository.Save(this, invoicedto);
     multiplemodels = new Multiplemodels();
     multiplemodels.TimeActivityModel = timeActivitydto;
     multiplemodels.InvoiceModel = invoicedto;
     multiplemodels.SyncObjectsModel = invoicedto.TimeActivityDto.Syncdto;
     multiplemodels.IsConnected = timeActivitydto.oAuthTokens.IsConnected;
     multiplemodels.IsReadyTimeentry = true;
     multiplemodels.IsReadytoInvoice = true;
     multiplemodels.IsReadySync = false;
     return View("Invoices", multiplemodels);
 }
 /// <summary>
 /// View is resposible for rendering the final view
 /// </summary>
 /// <param name="id"></param>
 /// <returns></returns>
 public ActionResult View(Int64 id)
 {
     Invoicedto invoicedto = id > 0 ? new InvoiceRepository().Get(this, id) : new Invoicedto();
     invoiceService = new InvoiceService(invoicedto);
     invoicedto = invoiceService.LoadPending(invoicedto);
     invoicedto = invoiceService.LoadInvoiced(invoicedto);
     multiplemodels = new Multiplemodels();
     multiplemodels.TimeActivityModel = invoicedto.TimeActivityDto;
     multiplemodels.InvoiceModel = invoicedto;
     multiplemodels.SyncObjectsModel = invoicedto.TimeActivityDto.Syncdto;
     multiplemodels.IsReadySync = multiplemodels.SyncObjectsModel.IsEmployeeSync | multiplemodels.SyncObjectsModel.IsCustomerSync | multiplemodels.SyncObjectsModel.IsServiceItemSync;
     multiplemodels.IsReadyTimeentry = true;
     multiplemodels.IsReadytoInvoice = false;
     return View("Invoices", multiplemodels);
 }