Files
2017-03-08 11:21:27 +01:00

146 lines
6.3 KiB
VB.net

Imports System
Imports System.ComponentModel
Imports System.Collections.Generic
Imports System.Diagnostics
Imports System.Text
Imports DevExpress.ExpressApp
Imports DevExpress.ExpressApp.Actions
Imports DevExpress.Persistent.Base
Imports DevExpress.Xpo
Imports DevExpress.Data.Filtering
Imports System.Xml
Public Class CurrencyRateVC
Inherits DevExpress.ExpressApp.ViewController
Public Event InitWork(ByVal _Minimum As Long, ByVal _Step As Long, ByVal _Maximum As Long)
Public Event DoWork()
Public Event FinalWork
Public Sub New()
MyBase.New()
'This call is required by the Component Designer.
InitializeComponent()
RegisterActions(components)
End Sub
Private Sub aSyncroniseMNBCurrencyRate_Execute(sender As System.Object, e As DevExpress.ExpressApp.Actions.SimpleActionExecuteEventArgs) Handles aSyncroniseMNBCurrencyRate.Execute
Dim _onew As Xpo.XPObjectSpace = Application.CreateObjectSpace
Dim _uow As New UnitOfWork(_onew.Session.DataLayer)
SyncroniseMNBCurrencyRate(_uow)
End Sub
Sub SyncroniseMNBCurrencyRate(_uow As UnitOfWork)
Dim _XML As String
Dim _MNBArfolyamService As New MNBArfolyamService.MNBArfolyamServiceSoapClient
Dim _CurrencyName_Collection As XPCollection(Of CurrencyName) = New XPCollection(Of CurrencyName)(_uow, CriteriaOperator.Parse("1=1"))
Dim _CurrencyRate_Collection As XPCollection(Of CurrencyRate) = New XPCollection(Of CurrencyRate)(_uow, CriteriaOperator.Parse("Active=True"))
Dim _CurrencyRate As CurrencyRate
Dim _BeginDate As Date = "2011-01-01"
Dim _StartDate As Date
Dim _EndDate As Date = String.Format("{0}-{1}-{2}", Now.Year, Now.Month, Now.Day)
Dim _XMLDocument As New XmlDocument
Dim _XmlNode1 As Xml.XmlNode
Dim _XmlNode2 As Xml.XmlNode
Dim _DateValid As Date
Dim _RateAverage As Double
If _MNBArfolyamService IsNot Nothing Then
If _CurrencyRate_Collection.Count > 0 Then 'Kitöröljük az Active beállítást
For Each _CurrencyRate In _CurrencyRate_Collection
_CurrencyRate.Active = False
Next
_uow.CommitChanges()
End If
For Each _CurrencyName In _CurrencyName_Collection
If _CurrencyName.ShortName = "HUF" Then 'A HUF árfolyam nem értelmezett
Continue For
End If
_CurrencyRate_Collection = New XPCollection(Of CurrencyRate)(_uow, CriteriaOperator.Parse("CurrencyName.ShortName=?", _CurrencyName.ShortName))
If _CurrencyRate_Collection.Count > 0 Then
_CurrencyRate_Collection.Sorting.Add(New SortProperty("DateValid", DB.SortingDirection.Descending))
_StartDate = DateAdd(DateInterval.Day, 1, _CurrencyRate_Collection(0).DateValid)
Else
_StartDate = _BeginDate
End If
_EndDate = DateAdd(DateInterval.Day, 30, _StartDate)
If _EndDate > Now.Date Then
_EndDate = Now.Date
End If
Do While _StartDate <= Now.Date
'_XML = _MNBArfolyamService.GetExchangeRates(_StartDate, _EndDate, _CurrencyName.ToString)
Dim _GetExchangeRatesRequestBody As New MNBArfolyamService.GetExchangeRatesRequestBody
Dim _GetExchangeRatesResponseBody As MNBArfolyamService.GetExchangeRatesResponseBody
_GetExchangeRatesRequestBody.startDate = _StartDate
_GetExchangeRatesRequestBody.endDate = _EndDate
_GetExchangeRatesRequestBody.currencyNames = _CurrencyName.ToString
_GetExchangeRatesResponseBody = _MNBArfolyamService.GetExchangeRates(_GetExchangeRatesRequestBody)
_XML = _GetExchangeRatesResponseBody.GetExchangeRatesResult
_XMLDocument.LoadXml(_XML.ToString)
For Each _XmlNode1 In _XMLDocument.SelectNodes("MNBExchangeRates")
For Each _XmlNode2 In _XmlNode1.SelectNodes("Day")
_RateAverage = _XmlNode2.InnerText
_DateValid = _XmlNode2.Attributes("date").Value
_CurrencyRate = _uow.FindObject(Of CurrencyRate)(CriteriaOperator.Parse("CurrencyName.ShortName=? And DateValid=?", _CurrencyName.ShortName, _DateValid))
If _CurrencyRate Is Nothing Then
_CurrencyRate = New CurrencyRate(_uow)
_CurrencyRate.CurrencyName = _CurrencyName
_CurrencyRate.DateValid = _DateValid
_CurrencyRate.RateAverage = _RateAverage
_CurrencyRate.IsMNB = True
_CurrencyRate.Save()
End If
Next
Next
_StartDate = DateAdd(DateInterval.Day, 1, _EndDate.Date)
_EndDate = DateAdd(DateInterval.Day, 30, _StartDate)
If _EndDate > Now.Date Then
_EndDate = Now.Date
End If
Loop
_CurrencyRate_Collection = New XPCollection(Of CurrencyRate)(_uow, CriteriaOperator.Parse("CurrencyName.ShortName=?", _CurrencyName.ShortName))
If _CurrencyRate_Collection.Count > 0 Then
_CurrencyRate_Collection.Sorting.Add(New SortProperty("DateValid", DB.SortingDirection.Descending))
_StartDate = DateAdd(DateInterval.Day, 1, _CurrencyRate_Collection(0).DateValid)
_CurrencyRate_Collection(0).Active = True
_CurrencyRate_Collection(0).Save()
End If
Next
End If
_uow.CommitChanges()
End Sub
''// Az összes CurrencyName XPCollection-ra ! (aktuális évet megelõzõ év -> mai napig
'_XML = _MNBArfolyamService.GetExchangeRates("2012-03-02", "2012-03-05", "EUR")
'_XML = _MNBArfolyamService.GetExchangeRates("2012-03-02", "2012-03-05", "USD")
'_XML = _MNBArfolyamService.GetExchangeRates("2012-03-02", "2012-03-05", "CHF")
'_XML = _MNBArfolyamService.GetExchangeRates("2012-03-02", "2012-03-05", "GBP")
End Class