Advertisement
yambroskin

Untitled

Aug 27th, 2018
187
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 31.54 KB | None | 0 0
  1. using EleWise.ELMA.ComponentModel;
  2. using EleWise.ELMA.Logging;
  3. using EleWise.ELMA.Model.Managers;
  4. using EleWise.ELMA.Runtime.NH.Listeners;
  5. using Impeltech.Bank.Helpers;
  6. using Impeltech.Bank.Managers;
  7. using Impeltech.Bank.Models;
  8. using Impeltech.Bank.Orchard;
  9. using System;
  10. using System.IO;
  11. using System.Linq;
  12. using EleWise.ELMA.Files;
  13. using EleWise.ELMA.Model.Entities;
  14. using Impeltech.Bank.Extensions;
  15. using Impeltech.Bank.StopFactors;
  16. using Impeltech.Kontur.Extenshions;
  17. using NHibernate.Event;
  18.  
  19. namespace Impeltech.Bank.Components
  20. {
  21.     [Component]
  22.     public class OrchardEntityEventListener : EntityEventsListener
  23.     {
  24.         #region Insert
  25.         public override bool OnPreInsert(PreInsertEvent @event)
  26.         {
  27.             try
  28.             {
  29.                 if (@event.Entity is ICustomer)
  30.                 {
  31.                     var entity = @event.Entity as ICustomer;
  32.                     try
  33.                     {
  34.                         if (entity.Req == null && entity.EgrDetailsRequest == null)
  35.                         {
  36.                             CustomerManager.Instance.UpdateKontur(entity);
  37.                         }
  38.                     }
  39.                     catch (Exception ex)
  40.                     {
  41.                         Logger.Log.Error(ex.Message);
  42.                     }
  43.                     Update(entity);
  44.                 }
  45.                 if (@event.Entity is ISignedFile)
  46.                 {
  47.                     var entity = @event.Entity as ISignedFile;
  48.                     if (entity.RequestLimit?.Applicant != null)
  49.                     {
  50.                         entity.Subject = entity.RequestLimit.Applicant;
  51.                     }
  52.                     if (entity.Request?.Applicant != null)
  53.                     {
  54.                         entity.Subject = entity.Request.Applicant;
  55.                     }
  56.                     entity.UpdateName();
  57.                 }
  58.                 if (@event.Entity is ITaxForm)
  59.                 {
  60.                     var entity = @event.Entity as ITaxForm;
  61.                     Update(entity);
  62.                 }
  63.                 if (@event.Entity is IHelpBidType)
  64.                 {
  65.                     var entity = @event.Entity as IHelpBidType;
  66.                     Update(entity);
  67.                 }
  68.                 if (@event.Entity is IGuaranteeType)
  69.                 {
  70.                     var entity = @event.Entity as IGuaranteeType;
  71.                     Update(entity);
  72.                 }
  73.                 if (@event.Entity is IPrinciple)
  74.                 {
  75.                     var entity = @event.Entity as IPrinciple;
  76.                     Update(entity);
  77.                 }
  78.                 if (@event.Entity is IAwardApplication)
  79.                 {
  80.                     var entity = @event.Entity as IAwardApplication;
  81.                     Update(entity);
  82.                 }
  83.                 if (@event.Entity is IAgent)
  84.                 {
  85.                     var entity = @event.Entity as IAgent;
  86.                     Update(entity);
  87.                 }
  88.                 if (@event.Entity is IUserAgent)
  89.                 {
  90.                     var entity = @event.Entity as IUserAgent;
  91.                     Update(entity);
  92.                 }
  93.                 if (@event.Entity is ISubjectMSP)
  94.                 {
  95.                     var entity = @event.Entity as ISubjectMSP;
  96.                     Update(entity);
  97.                 }
  98.                 if (@event.Entity is IBankGuaranteeLimit)
  99.                 {
  100.                     var entity = @event.Entity as IBankGuaranteeLimit;
  101.                     Update(entity);
  102.                 }
  103.                 if (@event.Entity is IClientFixation)
  104.                 {
  105.                     var entity = @event.Entity as IClientFixation;
  106.                     Update(entity);
  107.                 }
  108.                 if (@event.Entity is IAwardApplicationAct)
  109.                 {
  110.                     var entity = @event.Entity as IAwardApplicationAct;
  111.                     entity.Name = entity.Agent == null ? "Свод" : $"Акт {entity.Agent.Name}"
  112.                         + $" c {entity.PeriodS.ToShortDateString()} по {entity.PeriodPO.ToShortDateString()}";
  113.                 }
  114.                 if (@event.Entity is IStopFactor)
  115.                 {
  116.                     var entity = @event.Entity as IStopFactor;
  117.                     var handler = StopFactorHelper.Instance.GetStopFactorHandler(entity);
  118.                     handler.SetDefaultSettings(entity);
  119.                 }
  120.                 if (@event.Entity is IReasonForCancel)
  121.                 {
  122.                     var entity = @event.Entity as IReasonForCancel;
  123.                     Update(entity);
  124.                 }
  125.             }
  126.             catch (Exception ex)
  127.             {
  128.                 var message = $"Не удалось выполнить {nameof(OnPreInsert)}";
  129.                 Logger.Log.Error(message, ex);
  130.                 throw new Exception(message, ex); //Прервать событие
  131.             }
  132.             return false;
  133.         }
  134.  
  135.         public override void OnPostInsert(PostInsertEvent @event)
  136.         {
  137.             try
  138.             {
  139.                 if (@event.Entity is IHistoryStepItem)
  140.                 {
  141.                     var historyStepItem = @event.Entity as IHistoryStepItem;
  142.                     if (!string.IsNullOrWhiteSpace(historyStepItem.FullNameStep))
  143.                     {
  144.                         //определение и обработка похожих шагов
  145.                         PrepareSimilarStepItem(historyStepItem);
  146.                     }
  147.                     if (historyStepItem.Request != null)
  148.                     {
  149.                         historyStepItem.Request.LastEvent = historyStepItem;
  150.                         historyStepItem.Request.Save();
  151.                     }
  152.                 }
  153.             }
  154.             catch (Exception ex)
  155.             {
  156.                 var message = $"Не удалось выполнить {nameof(OnPostInsert)}";
  157.                 Logger.Log.Error(message, ex);
  158.             }
  159.             base.OnPostInsert(@event);
  160.         }
  161.         #endregion
  162.         #region Update
  163.         public override bool OnPreUpdate(PreUpdateEvent @event)
  164.         {
  165.             try
  166.             {
  167.                 if (@event.Entity is ISubjectMSP)
  168.                 {
  169.                     var entity = @event.Entity as ISubjectMSP;
  170.                     Update(entity);
  171.                 }
  172.                 if (@event.Entity is IAwardApplication)
  173.                 {
  174.                     var entity = @event.Entity as IAwardApplication;
  175.                     Update(entity);
  176.                 }
  177.                 if (@event.Entity is ICustomer)
  178.                 {
  179.                     var entity = @event.Entity as ICustomer;
  180.                     Update(entity);
  181.                 }
  182.                 if (@event.Entity is ITaxForm)
  183.                 {
  184.                     var entity = @event.Entity as ITaxForm;
  185.                     Update(entity);
  186.                 }
  187.                 if (@event.Entity is IHelpBidType)
  188.                 {
  189.                     var entity = @event.Entity as IHelpBidType;
  190.                     Update(entity);
  191.                 }
  192.                 if (@event.Entity is IGuaranteeType)
  193.                 {
  194.                     var entity = @event.Entity as IGuaranteeType;
  195.                     Update(entity);
  196.                 }
  197.                 if (@event.Entity is IPrinciple)
  198.                 {
  199.                     var entity = @event.Entity as IPrinciple;
  200.                     Update(entity);
  201.                 }
  202.                 if (@event.Entity is IAgent)
  203.                 {
  204.                     var entity = @event.Entity as IAgent;
  205.                     Update(entity);
  206.                 }
  207.                 if (@event.Entity is IUserAgent)
  208.                 {
  209.                     var entity = @event.Entity as IUserAgent;
  210.                     Update(entity);
  211.                 }
  212.                 if (@event.Entity is IBankGuaranteeLimit)
  213.                 {
  214.                     var entity = @event.Entity as IBankGuaranteeLimit;
  215.                     entity.UpdateAmounts();
  216.                     Update(entity);
  217.                 }
  218.                 if (@event.Entity is IClientFixation)
  219.                 {
  220.                     var entity = @event.Entity as IClientFixation;
  221.                     Update(entity);
  222.                 }
  223.                 if (@event.Entity is ISignedFile)
  224.                 {
  225.                     var entity = @event.Entity as ISignedFile;
  226.                     entity.UpdateName();
  227.                     var numFile = Array.IndexOf(@event.Persister.PropertyNames, nameof(ISignedFile.File));
  228.                     if (numFile >= 0)
  229.                     {
  230.                         var fileOld = (BinaryFile)@event.OldState[numFile];
  231.                         var fileNew = (BinaryFile)@event.State[numFile];
  232.                         //если файл изменен и он раньше существовал в орчарде - иначе нет смысла его туда отплавлять
  233.                         if (fileOld != null && fileNew != null && !fileOld.Equals(fileNew))
  234.                         {
  235.                             // если файл существует
  236.                             if (entity.File != null && File.Exists(entity.File?.ContentFilePath))
  237.                             {
  238.                                 // проверим хэш
  239.                                 var newFileHash = SignedFileManager.GetHash(entity.File.ContentFilePath);
  240.                                 //если хеш не равен тому что уже есть
  241.                                 if (!newFileHash.Equals(entity.FileHash))
  242.                                 {
  243.                                     //сохраним новый хеш
  244.                                     entity.FileHash = newFileHash;
  245.                                     //и отправим в орчард т.к. если хеш отличается значит файл изменилсяв нашей системе
  246.                                     var request = entity.Request ?? entity.RequestLimit as IEntity;
  247.                                     entity.FileId = OrchardHelper.Instance.UpdateOrCreateEncodedFile(
  248.                                         new SignedFileContract(entity, request),
  249.                                         File.ReadAllBytes(entity?.File?.ContentFilePath));
  250.                                 }
  251.                             }
  252.                         }
  253.                     }
  254.                 }
  255.                 if (@event.Entity is IReasonForCancel)
  256.                 {
  257.                     var entity = @event.Entity as IReasonForCancel;
  258.                     Update(entity);
  259.                 }
  260.             }
  261.             catch (Exception ex)
  262.             {
  263.                 var message = $"Не удалось выполнить {nameof(OnPreUpdate)}";
  264.                 Logger.Log.Error(message, ex);
  265.                 throw new Exception(message, ex); //Прервать событие
  266.             }
  267.             return false;
  268.         }
  269.  
  270.         public override void OnPreUpdateCollection(PreCollectionUpdateEvent @event)
  271.         {
  272.             try
  273.             {
  274.                 if (@event.AffectedOwnerOrNull is ICustomer)
  275.                 {
  276.                     var entity = (ICustomer)@event.AffectedOwnerOrNull;
  277.                     Update(entity);
  278.                 }
  279.                 if (@event.AffectedOwnerOrNull is IBankGuaranteeLimit)
  280.                 {
  281.                     var entity = @event.AffectedOwnerOrNull as IBankGuaranteeLimit;
  282.                     Update(entity);
  283.                 }
  284.                 if (@event.AffectedOwnerOrNull is IClientFixation)
  285.                 {
  286.                     var entity = @event.AffectedOwnerOrNull as IClientFixation;
  287.                     Update(entity);
  288.                 }
  289.             }
  290.             catch (Exception ex)
  291.             {
  292.                 var message = $"Не удалось выполнить {nameof(OnPreUpdateCollection)}";
  293.                 Logger.Log.Error(message, ex);
  294.             }
  295.         }
  296.         public override void OnPostUpdate(PostUpdateEvent @event)
  297.         {
  298.             try
  299.             {
  300.                 if (@event.Entity is IAdditionalRequest)
  301.                 {
  302.                     var numResponse = Array.IndexOf(@event.Persister.PropertyNames, "ReceivedResponse");
  303.                     if (numResponse >= 0)
  304.                     {
  305.                         var responseStatusOld = (bool)@event.OldState[numResponse];
  306.                         var responseStatusNew = (bool)@event.State[numResponse];
  307.                         //если было нет а стало да то нужно запустить процесс
  308.                         if (responseStatusOld == false && responseStatusNew)
  309.                         {
  310.                             var entity = (IAdditionalRequest)@event.Entity;
  311.                             AdditionalRequestManager.Instance.StartProcessAdditionalRequestAnswerReceived(entity);
  312.                         }
  313.                     }
  314.                 }
  315.                 if (@event.Entity is IRequestBankGuarantee)
  316.                 {
  317.                     var numStep = Array.IndexOf(@event.Persister.PropertyNames, nameof(IRequestBankGuarantee.Step));
  318.                     var numFullNameStep = Array.IndexOf(@event.Persister.PropertyNames, nameof(IRequestBankGuarantee.FullNameStep));
  319.                     if (numStep >= 0 && numFullNameStep >= 0)
  320.                     {
  321.                         var stepOld = (string)@event.OldState[numStep];
  322.                         var stepNew = (string)@event.State[numStep];
  323.                         var fullNameStepOld = (string)@event.OldState[numFullNameStep];
  324.                         var fullNameStepNew = (string)@event.State[numFullNameStep];
  325.                         var request = @event.Entity as IRequestBankGuarantee;
  326.                         if (stepOld != stepNew ||
  327.                             fullNameStepOld != fullNameStepNew ||
  328.                             request.LastEvent == null && (!string.IsNullOrWhiteSpace(stepNew) || !string.IsNullOrWhiteSpace(fullNameStepNew)))
  329.                         {
  330.  
  331.                             var historyElement = EntityManager<IHistoryStepItem>.Instance.Create();
  332.                             historyElement.Step = stepNew;
  333.                             historyElement.FullNameStep = fullNameStepNew;
  334.                             historyElement.Request = request;
  335.                             historyElement.Save();
  336.                             if (stepOld != stepNew && stepNew == "#0")
  337.                             {
  338.                                 request.Limit?.UpdateAmounts();
  339.                             }
  340.                         }
  341.                     }
  342.                     var numCanceled = Array.IndexOf(@event.Persister.PropertyNames, nameof(IRequestBankGuarantee.Canceled));
  343.                     if (numCanceled >= 0)
  344.                     {
  345.                         var canceledOld = (bool)@event.OldState[numCanceled];
  346.                         var canceledNew = (bool)@event.State[numCanceled];
  347.                         if (canceledOld != canceledNew)
  348.                         {
  349.                             var request = @event.Entity as IRequestBankGuarantee;
  350.                             request.Limit?.UpdateAmounts();
  351.                         }
  352.                     }
  353.                     var numIssued = Array.IndexOf(@event.Persister.PropertyNames, nameof(IRequestBankGuarantee.Issued));
  354.                     if (numIssued >= 0)
  355.                     {
  356.                         var issuedOld = (bool)@event.OldState[numIssued];
  357.                         var issuedNew = (bool)@event.State[numIssued];
  358.                         if (issuedOld != issuedNew)
  359.                         {
  360.                             var request = @event.Entity as IRequestBankGuarantee;
  361.                             request.Limit?.UpdateAmounts();
  362.                             if (issuedNew)
  363.                             {
  364.                                 request.UpdateIssuedFixation();
  365.                             }
  366.                         }
  367.                     }
  368.  
  369.                 }
  370.                 if (@event.Entity is IRequestLimit)
  371.                 {
  372.                     var numStep = Array.IndexOf(@event.Persister.PropertyNames, "Step");
  373.                     var numFullNameStep = Array.IndexOf(@event.Persister.PropertyNames, "FullNameStep");
  374.                     if (numStep >= 0 && numFullNameStep >= 0)
  375.                     {
  376.                         var stepOld = (string)@event.OldState[numStep];
  377.                         var stepNew = (string)@event.State[numStep];
  378.                         var fullNameStepOld = (string)@event.OldState[numFullNameStep];
  379.                         var fullNameStepNew = (string)@event.State[numFullNameStep];
  380.                         if (stepOld != stepNew || fullNameStepOld != fullNameStepNew)
  381.                         {
  382.                             var request = @event.Entity as IRequestLimit;
  383.                             var historyElement = EntityManager<IHistoryStepItem>.Instance.Create();
  384.                             historyElement.Step = stepNew;
  385.                             historyElement.FullNameStep = fullNameStepNew;
  386.                             historyElement.RequestLimit = request;
  387.                             historyElement.Save();
  388.                         }
  389.                     }
  390.                 }
  391.  
  392.                 var userExt = @event.Entity as IUserExt;
  393.                 if (userExt?.OrhardContentId > 0)
  394.                 {
  395.                     OrchardHelper.Instance.CreateOrUpdateCurrentElmaUser(userExt);
  396.                 }
  397.             }
  398.             catch (Exception ex)
  399.             {
  400.                 var message = $"Не удалось выполнить {nameof(OnPostUpdate)}";
  401.                 Logger.Log.Error(message, ex);
  402.             }
  403.             base.OnPostUpdate(@event);
  404.         }
  405.         #endregion
  406.         #region Delete
  407.         public override bool OnPreDelete(PreDeleteEvent @event)
  408.         {
  409.             try
  410.             {
  411.                 if (@event.Entity is ICustomer)
  412.                 {
  413.                     var entity = (ICustomer)@event.Entity;
  414.                     {
  415.                         var helper = new OrchardHelper();
  416.                         return !helper.DeleteContentItem((int)entity.OrhardContentId);
  417.                     }
  418.                 }
  419.                 if (@event.Entity is ITaxForm)
  420.                 {
  421.                     var entity = (ITaxForm)@event.Entity;
  422.                     var helper = new OrchardHelper();
  423.                     return !helper.DeleteContentItem((int)entity.OrhardContentId);
  424.                 }
  425.                 if (@event.Entity is IGuaranteeType)
  426.                 {
  427.                     var entity = (IGuaranteeType)@event.Entity;
  428.                     var helper = new OrchardHelper();
  429.                     return !helper.DeleteContentItem((int)entity.OrhardContentId);
  430.                 }
  431.                 if (@event.Entity is IRequestBankGuarantee)
  432.                 {
  433.                     var entity = (IRequestBankGuarantee)@event.Entity;
  434.                     var helper = new OrchardHelper();
  435.                     return entity.RequestNumberInOrchard != null && !helper.DeleteContentItem((int)entity.RequestNumberInOrchard);
  436.                 }
  437.                 if (@event.Entity is IRequestLimit)
  438.                 {
  439.                     var entity = (IRequestLimit)@event.Entity;
  440.                     var helper = new OrchardHelper();
  441.                     return !helper.DeleteContentItem((int)entity.OrhardContentId);
  442.                 }
  443.                 if (@event.Entity is ISubjectMSP)
  444.                 {
  445.                     var entity = (ISubjectMSP)@event.Entity;
  446.                     var helper = new OrchardHelper();
  447.                     return !helper.DeleteContentItem((int)entity.OrhardContentId);
  448.                 }
  449.                 if (@event.Entity is IPrinciple)
  450.                 {
  451.                     var entity = (IPrinciple)@event.Entity;
  452.                     var helper = new OrchardHelper();
  453.                     return !helper.DeleteContentItem((int)entity.OrhardContentId);
  454.                 }
  455.                 if (@event.Entity is IAgent)
  456.                 {
  457.                     var entity = (IAgent)@event.Entity;
  458.                     var helper = new OrchardHelper();
  459.                     return !helper.DeleteContentItem((int)entity.OrhardContentId);
  460.                 }
  461.                 if (@event.Entity is IUserAgent)
  462.                 {
  463.                     var entity = (IUserAgent)@event.Entity;
  464.                     var helper = new OrchardHelper();
  465.                     return !helper.DeleteContentItem(new UserAgentContract(entity));
  466.                 }
  467.                 if (@event.Entity is IBankGuaranteeLimit)
  468.                 {
  469.                     var entity = @event.Entity as IBankGuaranteeLimit;
  470.                     var helper = new OrchardHelper();
  471.                     return !helper.DeleteContentItem((int)entity.OrhardContentId);
  472.                 }
  473.                 if (@event.Entity is IClientFixation)
  474.                 {
  475.                     var entity = @event.Entity as IClientFixation;
  476.                     var helper = new OrchardHelper();
  477.                     return !helper.DeleteContentItem((int)entity.OrhardContentId);
  478.                 }
  479.                 if (@event.Entity is IAdditionalRequest)
  480.                 {
  481.                     var entity = (IAdditionalRequest)@event.Entity;
  482.                     var helper = new OrchardHelper();
  483.                     return !helper.RemoveAdditionalRequest(entity.Uid);
  484.                 }
  485.                 if (@event.Entity is IHelpBidType)
  486.                 {
  487.                     var entity = (IHelpBidType)@event.Entity;
  488.                     var helper = new OrchardHelper();
  489.                     return !helper.RemoveHelpBidType(entity.Id);
  490.                 }
  491.                 if (@event.Entity is IAwardApplication)
  492.                 {
  493.                     var entity = (IAwardApplication)@event.Entity;
  494.                     var helper = new OrchardHelper();
  495.                     helper.RemoveAwardApplication(entity.OrhardContentId);
  496.                 }
  497.                 if (@event.Entity is IReasonForCancel)
  498.                 {
  499.                     var entity = @event.Entity as IReasonForCancel;
  500.                     var helper = new OrchardHelper();
  501.                     return !helper.DeleteContentItem((int)entity.OrhardContentId);
  502.                 }
  503.             }
  504.             catch (Exception ex)
  505.             {
  506.                 var message = $"Не удалось выполнить {nameof(OnPreDelete)}";
  507.                 Logger.Log.Error(message, ex);
  508.                 throw new Exception(message, ex); //Прервать событие
  509.             }
  510.             return false;
  511.         }
  512.         #endregion
  513.         #region Helpers
  514.         private static void PrepareSimilarStepItem(IHistoryStepItem historyStepItem)
  515.         {
  516.             if (historyStepItem.Request != null)
  517.             {
  518.                 PrepareSimilarStepItem(historyStepItem, historyStepItem.Request.StepHistory);
  519.             }
  520.             if (historyStepItem.RequestLimit != null)
  521.             {
  522.                 PrepareSimilarStepItem(historyStepItem, historyStepItem.RequestLimit.StepHistory);
  523.             }
  524.         }
  525.         private static void PrepareSimilarStepItem(IHistoryStepItem historyStepItem, Iesi.Collections.Generic.ISet<IHistoryStepItem> stepHistory)
  526.         {
  527.             Func<IHistoryStepItem, bool> similarStepItem = c => c.FullNameStep == historyStepItem.FullNameStep;
  528.             var countSimilarStepItem = stepHistory.Count(similarStepItem);
  529.             if (countSimilarStepItem <= 0) return;
  530.             var indexNumber = countSimilarStepItem + 1;
  531.             historyStepItem.IndexNumber = indexNumber;
  532.             if (countSimilarStepItem == 1)
  533.             {
  534.                 var firstSimilarItem = stepHistory.FirstOrDefault(similarStepItem);
  535.                 if (firstSimilarItem != null)
  536.                 {
  537.                     firstSimilarItem.IndexNumber = 1;
  538.                     firstSimilarItem.Save();
  539.                 }
  540.             }
  541.             historyStepItem.Save();
  542.         }
  543.         #endregion
  544.  
  545.         #region Обновление
  546.  
  547.         public static void ExeuteIfHasChanges<T>(Action<T, string> action, T serializableContract, string oldHash)
  548.         {
  549.             var newHash = serializableContract.GetHashByJson();
  550.             /*
  551.              *для отладки хешей
  552.              *
  553.              *  var path = Path.Combine(HostingEnvironment.MapPath("~/")?? "C:\\", typeof(T).Name+".log");
  554.               File.AppendAllText(path,
  555.                   @"------------------" +
  556.                   $@"{Environment.NewLine}" +
  557.                   $@"new:{newHash} old:{oldHash ?? "null"} " +
  558.                   $@"{Environment.NewLine}" +
  559.                   $@"{Environment.NewLine}" +
  560.                   $@"{JsonConvert.SerializeObject(serializableContract)}");*/
  561.             if (string.IsNullOrWhiteSpace(oldHash) || !newHash.Equals(oldHash))
  562.             {
  563.                 action.Invoke(serializableContract, newHash);
  564.             }
  565.         }
  566.  
  567.         private static void Update(IReasonForCancel entity)
  568.         {
  569.             if (entity.Uid == Guid.Empty)
  570.                 entity.Uid = Guid.NewGuid();
  571.             ExeuteIfHasChanges(
  572.                 (contract, s) =>
  573.                 {
  574.                     entity.OutboundHash = s;
  575.                     entity.OrhardContentId = OrchardHelper.Instance.SaveRejectionReason(contract);
  576.                 },
  577.                 new ReasonForCancelContract(entity),
  578.                 entity.OutboundHash);
  579.         }
  580.  
  581.         private static void Update(IClientFixation entity)
  582.         {
  583.             if (entity.Uid == Guid.Empty)
  584.                 entity.Uid = Guid.NewGuid();
  585.             ExeuteIfHasChanges(
  586.                 (contract, s) =>
  587.                 {
  588.                     entity.OutboundHash = s;
  589.                     entity.OrhardContentId = OrchardHelper.Instance.SaveClientFixation(contract);
  590.                 },
  591.                 new ClientFixationContract(entity),
  592.                 entity.OutboundHash);
  593.         }
  594.  
  595.         private static void Update(IBankGuaranteeLimit entity)
  596.         {
  597.             if (entity.Uid == Guid.Empty)
  598.                 entity.Uid = Guid.NewGuid();
  599.             entity.Name = $"Лимит {entity.Contragent?.ShortName}";
  600.             entity.UpdateAmounts();
  601.             ExeuteIfHasChanges(
  602.                 (contract, s) =>
  603.                 {
  604.                     entity.OutboundHash = s;
  605.                     entity.OrhardContentId = OrchardHelper.Instance.SaveBankGuaranteeLimit(contract);
  606.                 },
  607.                 new BankGuaranteeLimitContract(entity),
  608.                 entity.OutboundHash);
  609.         }
  610.  
  611.         private static void Update(ISubjectMSP entity)
  612.         {
  613.             if (entity.Uid == Guid.Empty)
  614.                 entity.Uid = Guid.NewGuid();
  615.             // если в орчарде его нет, нет закреплений, нет агент и он не в черном списке то не нужно его отправлять зря в орчардд
  616.             if(!(entity.OrhardContentId > 0) && !entity.Fixations.Any() && entity.Agent == null && !entity.InBlackList) return;
  617.             ExeuteIfHasChanges(
  618.                 (contract, s) =>
  619.                 {
  620.                     entity.OutboundHash = s;
  621.                     entity.OrhardContentId = OrchardHelper.Instance.CreateOrUpdateApplicant(contract);
  622.                 },
  623.                 new ApplicantContract(entity),
  624.                 entity.OutboundHash);
  625.         }
  626.  
  627.         private static void Update(IUserAgent entity)
  628.         {
  629.             if (entity.Uid == Guid.Empty)
  630.                 entity.Uid = Guid.NewGuid();
  631.             ExeuteIfHasChanges(
  632.                 (contract, s) =>
  633.                 {
  634.                     entity.OutboundHash = s;
  635.                     entity.OrhardContentId = OrchardHelper.Instance.CreateOrUpdateUserAgent(contract);
  636.                 },
  637.                 new UserAgentContract(entity),
  638.                 entity.OutboundHash);
  639.         }
  640.  
  641.         private static void Update(IAgent entity)
  642.         {
  643.             if (entity.Uid == Guid.Empty)
  644.                 entity.Uid = Guid.NewGuid();
  645.             ExeuteIfHasChanges(
  646.                 (contract, s) =>
  647.                 {
  648.                     entity.OutboundHash = s;
  649.                     entity.OrhardContentId = OrchardHelper.Instance.CreateOrUpdateAgent(contract);
  650.                 },
  651.                 new AgentContract(entity),
  652.                 entity.OutboundHash);
  653.         }
  654.  
  655.         private static void Update(IAwardApplication entity)
  656.         {
  657.             if (entity.Uid == Guid.Empty)
  658.                 entity.Uid = Guid.NewGuid();
  659.             ExeuteIfHasChanges(
  660.                 (contract, s) =>
  661.                 {
  662.                     entity.OutboundHash = s;
  663.                     entity.OrhardContentId = OrchardHelper.Instance.CreateOrUpdateAwardApplication(contract);
  664.                 },
  665.                 new AwardApplicationContract(entity),
  666.                 entity.OutboundHash);
  667.         }
  668.  
  669.         private static void Update(IPrinciple entity)
  670.         {
  671.             if (entity.Uid == Guid.Empty)
  672.                 entity.Uid = Guid.NewGuid();
  673.             ExeuteIfHasChanges(
  674.                 (contract, s) =>
  675.                 {
  676.                     entity.OutboundHash = s;
  677.                     entity.OrhardContentId = OrchardHelper.Instance.CreatePrinciple(entity.Uid, entity.Name);
  678.                 },
  679.                 entity.Name,
  680.                 entity.OutboundHash);
  681.         }
  682.  
  683.         private static void Update(IGuaranteeType entity)
  684.         {
  685.             if (entity.Uid == Guid.Empty)
  686.                 entity.Uid = Guid.NewGuid();
  687.             ExeuteIfHasChanges(
  688.                 (contract, s) =>
  689.                 {
  690.                     entity.OutboundHash = s;
  691.                     entity.OrhardContentId = OrchardHelper.Instance.CreateGuaranteeType(contract);
  692.                 },
  693.                 new GuaranteeTypeContract(entity),
  694.                 entity.OutboundHash);
  695.         }
  696.  
  697.         private static void Update(IHelpBidType entity)
  698.         {
  699.             if (entity.Uid == Guid.Empty)
  700.                 entity.Uid = Guid.NewGuid();
  701.             ExeuteIfHasChanges(
  702.                 (contract, s) =>
  703.                 {
  704.                     entity.OutboundHash = s;
  705.                     entity.OrhardContentId = OrchardHelper.Instance.SaveHelpBidType(contract);
  706.                 },
  707.                 new HelpBidTypeContract(entity),
  708.                 entity.OutboundHash);
  709.         }
  710.  
  711.         private static void Update(ITaxForm entity)
  712.         {
  713.             if (entity.Uid == Guid.Empty)
  714.                 entity.Uid = Guid.NewGuid();
  715.             ExeuteIfHasChanges(
  716.                 (contract, s) =>
  717.                 {
  718.                     entity.OutboundHash = s;
  719.                     entity.OrhardContentId = OrchardHelper.Instance.CreateTaxForm(entity.Uid, entity.Name);
  720.                 },
  721.                 entity.Name,
  722.                 entity.OutboundHash);
  723.         }
  724.  
  725.         private static void Update(ICustomer entity)
  726.         {
  727.             if (entity.Uid == Guid.Empty)
  728.                 entity.Uid = Guid.NewGuid();
  729.             ExeuteIfHasChanges(
  730.                 (contract, s) =>
  731.                 {
  732.                     entity.OutboundHash = s;
  733.                     entity.OrhardContentId = OrchardHelper.Instance.CreateOrUpdateCustomer(contract);
  734.                 },
  735.                 new CustomerContract(entity),
  736.                 entity.OutboundHash);
  737.         }
  738.  
  739.         #endregion
  740.     }
  741. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement