SyncDataActions.cs 2.47 KB
using System;
using System.Collections.Generic;
using System.Linq;
using Sungero.Core;
using Sungero.CoreEntities;
using DirRX.Storage.SyncData;

namespace DirRX.Storage.Client
{

  partial class SyncDataCollectionActions
  {

    public virtual bool CanConfirmSelected(Sungero.Domain.Client.CanExecuteActionArgs e)
    {
      return true;
    }

    public virtual void ConfirmSelected(Sungero.Domain.Client.ExecuteActionArgs e)
    {
      var selectedIds = _objs.Select(x => x.Id).ToList();
      var notConfirmed = PublicFunctions.Module.Remote.GetNotConfirmedSyncData().Where(x => selectedIds.Contains(x.Id)).ToList();
      var cnt = notConfirmed.Count;
      if (cnt > 0)
      {
        var accepted = Calendar.Now;
        var responsible = Users.Current;
        
        foreach (var item in notConfirmed)
        {
          item.Accepted = accepted;
          item.Responsible = responsible;
          item.Save();
          
          var assyncHandler = AsyncHandlers.SynchronizeExternalEntities.Create();
          assyncHandler.eventLogId = item.Id;
          assyncHandler.ExecuteAsync();
        }
        Dialogs.NotifyMessage(string.Format("{0} пакетов отправлено в обработку", cnt));
      }
    }

    public virtual bool CanDeleteSelected(Sungero.Domain.Client.CanExecuteActionArgs e)
    {
      return true;
    }

    public virtual void DeleteSelected(Sungero.Domain.Client.ExecuteActionArgs e)
    {
      Functions.Module.Remote.DeleteSyncData(_objs.Select(x => x.Id).ToList());
    }
  }

  internal static class SyncDataStaticActions
  {

    public static bool CanConfirmAll(Sungero.Domain.Client.CanExecuteActionArgs e)
    {
      return true;
    }

    public static void ConfirmAll(Sungero.Domain.Client.ExecuteActionArgs e)
    {
      var notConfirmed = PublicFunctions.Module.Remote.GetNotConfirmedSyncData().ToList();
      
      var cnt = notConfirmed.Count;
      if (cnt > 0)
      {
        var accepted = Calendar.Now;
        var responsible = Users.Current;
        
        foreach (var item in notConfirmed)
        {
          item.Accepted = accepted;
          item.Responsible = responsible;
          item.Save();
          
          var assyncHandler = AsyncHandlers.SynchronizeExternalEntities.Create();
          assyncHandler.eventLogId = item.Id;
          assyncHandler.ExecuteAsync();
        }
        Dialogs.NotifyMessage(string.Format("{0} пакетов отправлено в обработку", cnt));
      }
    }
  }

}