Laden korrigiert, Status Enum statt Flags
This commit is contained in:
parent
6031b5df94
commit
9f31b3cea4
@ -60,7 +60,10 @@ namespace ENI2
|
|||||||
|
|
||||||
ResetSplashCreated.WaitOne();
|
ResetSplashCreated.WaitOne();
|
||||||
|
|
||||||
base.OnStartup(e);
|
base.OnStartup(e);
|
||||||
|
|
||||||
|
// set connectnion string to async loader
|
||||||
|
DBManagerAsync.ConnectionString = ENI2.Properties.Settings.Default.ConnectionString;
|
||||||
|
|
||||||
// initialize static / localized lookups from sqlite database
|
// initialize static / localized lookups from sqlite database
|
||||||
|
|
||||||
|
|||||||
@ -8,6 +8,7 @@
|
|||||||
xmlns:col="clr-namespace:System.Collections;assembly=mscorlib"
|
xmlns:col="clr-namespace:System.Collections;assembly=mscorlib"
|
||||||
xmlns:p="clr-namespace:ENI2.Properties"
|
xmlns:p="clr-namespace:ENI2.Properties"
|
||||||
xmlns:local="clr-namespace:ENI2.Controls"
|
xmlns:local="clr-namespace:ENI2.Controls"
|
||||||
|
xmlns:db="clr-namespace:bsmd.database;assembly=bsmd.database"
|
||||||
mc:Ignorable="d"
|
mc:Ignorable="d"
|
||||||
d:DesignHeight="450" d:DesignWidth="800">
|
d:DesignHeight="450" d:DesignWidth="800">
|
||||||
<UserControl.Resources>
|
<UserControl.Resources>
|
||||||
@ -54,16 +55,29 @@
|
|||||||
<local:ENIDataGrid.RowStyle>
|
<local:ENIDataGrid.RowStyle>
|
||||||
<Style TargetType="DataGridRow">
|
<Style TargetType="DataGridRow">
|
||||||
<Style.Triggers>
|
<Style.Triggers>
|
||||||
<DataTrigger Binding="{Binding IsNextThreeDays}" Value="true">
|
<DataTrigger Binding="{Binding Status}" Value="{x:Static db:MaerskData+MDStatus.ID}">
|
||||||
<Setter Property="Background" Value="LightGreen"></Setter>
|
<Setter Property="Background" Value="LightGreen"></Setter>
|
||||||
</DataTrigger>
|
</DataTrigger>
|
||||||
<DataTrigger Binding="{Binding HasNoIdea}" Value="true">
|
<DataTrigger Binding="{Binding Status}" Value="{x:Static db:MaerskData+MDStatus.NO_ID}">
|
||||||
<Setter Property="Background" Value="LightPink"></Setter>
|
<Setter Property="Background" Value="LightPink"></Setter>
|
||||||
</DataTrigger>
|
</DataTrigger>
|
||||||
|
<DataTrigger Binding="{Binding Status}" Value="{x:Static db:MaerskData+MDStatus.UPDATED}">
|
||||||
|
<Setter Property="Background" Value="LightYellow"></Setter>
|
||||||
|
</DataTrigger>
|
||||||
|
<DataTrigger Binding="{Binding Status}" Value="{x:Static db:MaerskData+MDStatus.REQUESTING_ID}">
|
||||||
|
<Setter Property="Background" Value="Yellow"></Setter>
|
||||||
|
</DataTrigger>
|
||||||
|
<DataTrigger Binding="{Binding Status}" Value="{x:Static db:MaerskData+MDStatus.ID_ASSIGNED}">
|
||||||
|
<Setter Property="Background" Value="GreenYellow"></Setter>
|
||||||
|
</DataTrigger>
|
||||||
|
<DataTrigger Binding="{Binding Status}" Value="{x:Static db:MaerskData+MDStatus.NO_ID_AND_DUE}">
|
||||||
|
<Setter Property="Background" Value="Red"></Setter>
|
||||||
|
</DataTrigger>
|
||||||
</Style.Triggers>
|
</Style.Triggers>
|
||||||
</Style>
|
</Style>
|
||||||
</local:ENIDataGrid.RowStyle>
|
</local:ENIDataGrid.RowStyle>
|
||||||
<DataGrid.Columns>
|
<DataGrid.Columns>
|
||||||
|
<DataGridTextColumn Header="Status" Binding="{Binding Status}" IsReadOnly="True" />
|
||||||
<DataGridTextColumn Header="Col A" Binding="{Binding ColA}" IsReadOnly="True" />
|
<DataGridTextColumn Header="Col A" Binding="{Binding ColA}" IsReadOnly="True" />
|
||||||
<DataGridTextColumn Header="Col B" Binding="{Binding ColB}" IsReadOnly="True" />
|
<DataGridTextColumn Header="Col B" Binding="{Binding ColB}" IsReadOnly="True" />
|
||||||
<DataGridTextColumn Header="Ship. Area" Binding="{Binding ColC}" IsReadOnly="True" />
|
<DataGridTextColumn Header="Ship. Area" Binding="{Binding ColC}" IsReadOnly="True" />
|
||||||
|
|||||||
@ -23,12 +23,10 @@ namespace ENI2.Controls
|
|||||||
/// Interaction logic for MaerskListControl.xaml
|
/// Interaction logic for MaerskListControl.xaml
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public partial class MaerskListControl : UserControl
|
public partial class MaerskListControl : UserControl
|
||||||
{
|
{
|
||||||
|
|
||||||
#region Fields
|
#region Fields
|
||||||
|
|
||||||
private List<MessageCore> searchResult = new List<MessageCore>();
|
|
||||||
private readonly List<MessageCore> filteredResult = new List<MessageCore>();
|
|
||||||
private readonly ObservableCollection<MaerskData> maerskDataList = new ObservableCollection<MaerskData>();
|
private readonly ObservableCollection<MaerskData> maerskDataList = new ObservableCollection<MaerskData>();
|
||||||
private const uint MAX_EMPTY_ROWS_ON_IMPORT = 3; // import breaks if more than this count of empty rows have been read
|
private const uint MAX_EMPTY_ROWS_ON_IMPORT = 3; // import breaks if more than this count of empty rows have been read
|
||||||
|
|
||||||
@ -116,10 +114,8 @@ namespace ENI2.Controls
|
|||||||
|
|
||||||
#region private methods
|
#region private methods
|
||||||
|
|
||||||
private void PerformSearch()
|
private async void PerformSearch()
|
||||||
{
|
{
|
||||||
this.dataGridPOCores.ItemsSource = null;
|
|
||||||
this.filteredResult.Clear();
|
|
||||||
|
|
||||||
Dictionary<MessageCore.SearchFilterType, string> filterDict = new Dictionary<MessageCore.SearchFilterType, string>();
|
Dictionary<MessageCore.SearchFilterType, string> filterDict = new Dictionary<MessageCore.SearchFilterType, string>();
|
||||||
|
|
||||||
@ -131,17 +127,25 @@ namespace ENI2.Controls
|
|||||||
filterDict.Add(MessageCore.SearchFilterType.FILTER_FLAG_EQ, "0");
|
filterDict.Add(MessageCore.SearchFilterType.FILTER_FLAG_EQ, "0");
|
||||||
|
|
||||||
// suche auslösen
|
// suche auslösen
|
||||||
this.searchResult = DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).GetMessageCoresWithFilters(filterDict);
|
List<MessageCore> searchResult = DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).GetMessageCoresWithFilters(filterDict);
|
||||||
|
|
||||||
// alle anderen Häfen weg
|
// alle anderen Häfen weg
|
||||||
this.searchResult.RemoveAll(item => (item.PoC == null) || (!item.PoC.Equals("DEBRV") && !item.PoC.Equals("DEWHV") && !item.PoC.Equals("DEWVN")));
|
searchResult.RemoveAll(item => (item.PoC == null) || (!item.PoC.Equals("DEBRV") && !item.PoC.Equals("DEWHV") && !item.PoC.Equals("DEWVN")));
|
||||||
|
|
||||||
// sortieren nach ETA (kombiniert)
|
// alles entfernen was keine Maersk Xtra-Data hat (=noch nicht schon einmal importiert wurde)
|
||||||
searchResult.Sort((x, y) => DateTime.Compare(x.ETADisplay ?? DateTime.MaxValue, y.ETADisplay ?? DateTime.MaxValue));
|
foreach(MessageCore core in searchResult)
|
||||||
|
{
|
||||||
|
MaerskData md = await DBManagerAsync.LoadMaerskDataForCoreAsync(core.Id.Value);
|
||||||
|
if(md != null)
|
||||||
|
{
|
||||||
|
md.MessageCore = core;
|
||||||
|
md.MessageCoreId = core.Id.Value;
|
||||||
|
if(!maerskDataList.Contains(md)) // DatabaseEntity implements IEquatable
|
||||||
|
this.maerskDataList.Add(md);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
this.dataGridPOCores.SelectedItem = null;
|
this.dataGridPOCores.SelectedItem = null;
|
||||||
this.filteredResult.AddRange(searchResult);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private string ReadFieldAsString(IExcelDataReader reader, int fieldNum)
|
private string ReadFieldAsString(IExcelDataReader reader, int fieldNum)
|
||||||
@ -248,11 +252,23 @@ namespace ENI2.Controls
|
|||||||
// sort
|
// sort
|
||||||
// importData.Sort((x, y) => DateTime.Compare(x.ETA ?? DateTime.MaxValue, y.ETA ?? DateTime.MaxValue));
|
// importData.Sort((x, y) => DateTime.Compare(x.ETA ?? DateTime.MaxValue, y.ETA ?? DateTime.MaxValue));
|
||||||
|
|
||||||
// merge the result into our grid data source list
|
|
||||||
// TODO
|
|
||||||
|
|
||||||
foreach (MaerskData md in importData)
|
foreach (MaerskData md in importData)
|
||||||
|
{
|
||||||
|
md.Status = MaerskData.MDStatus.ID;
|
||||||
|
|
||||||
|
if (md.ColM.IsNullOrEmpty())
|
||||||
|
{
|
||||||
|
md.Status = MaerskData.MDStatus.NO_ID;
|
||||||
|
if (md.ETA.HasValue && md.ETA.Value.IsNextXDays(3))
|
||||||
|
md.Status = MaerskData.MDStatus.NO_ID_AND_DUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO: check if data has been updated
|
||||||
|
|
||||||
|
// TODO: Check if data is already present
|
||||||
|
|
||||||
maerskDataList.Add(md);
|
maerskDataList.Add(md);
|
||||||
|
}
|
||||||
this.dataGridPOCores.Items.Refresh();
|
this.dataGridPOCores.Items.Refresh();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -281,6 +297,29 @@ namespace ENI2.Controls
|
|||||||
private void buttonRequestIds_Click(object sender, RoutedEventArgs e)
|
private void buttonRequestIds_Click(object sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
// find all entries from now until 3 days into the future and track parallel requests
|
// find all entries from now until 3 days into the future and track parallel requests
|
||||||
|
List<MaerskData> requestList = new List<MaerskData>();
|
||||||
|
foreach (MaerskData md in this.dataGridPOCores.SelectedItems)
|
||||||
|
{
|
||||||
|
if ((md.MessageCore != null) || (!md.ColM.IsNullOrEmpty())) continue; // already requested
|
||||||
|
requestList.Add(md);
|
||||||
|
md.Status = MaerskData.MDStatus.REQUESTING_ID;
|
||||||
|
}
|
||||||
|
if(requestList.Count == 0)
|
||||||
|
{
|
||||||
|
MessageBox.Show("No valid rows selected", "Warning", MessageBoxButton.OK, MessageBoxImage.Exclamation);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Todo:
|
||||||
|
|
||||||
|
// 1) create MessageCore and message classes
|
||||||
|
|
||||||
|
// 2) request dbh Id
|
||||||
|
|
||||||
|
// 3) register watchdog for request completion
|
||||||
|
|
||||||
|
}
|
||||||
|
this.dataGridPOCores.Items.Refresh();
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|||||||
@ -417,11 +417,11 @@ namespace ENI2.DetailViewControls
|
|||||||
mhd.MessageHistories = DBManager.Instance.GetMessageHistories(historyMessage.Id.Value);
|
mhd.MessageHistories = DBManager.Instance.GetMessageHistories(historyMessage.Id.Value);
|
||||||
mhd.RequestReload += () => this.OnRequestReload(this.Core.Id.Value);
|
mhd.RequestReload += () => this.OnRequestReload(this.Core.Id.Value);
|
||||||
mhd.Show();
|
mhd.Show();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void contextSendMessage(object sender, RoutedEventArgs e)
|
private void contextSendMessage(object sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
MessageBoxResult result = MessageBox.Show(Properties.Resources.textConfirmSend, Properties.Resources.textConfirm, MessageBoxButton.YesNo, MessageBoxImage.Question);
|
MessageBoxResult result = MessageBox.Show(Properties.Resources.textConfirmSend, Properties.Resources.textConfirm, MessageBoxButton.YesNo, MessageBoxImage.Question);
|
||||||
if (result == MessageBoxResult.Yes)
|
if (result == MessageBoxResult.Yes)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -3,6 +3,7 @@
|
|||||||
// connection pooling.. will try it out in Maersk/PO numbers and expand over the whole
|
// connection pooling.. will try it out in Maersk/PO numbers and expand over the whole
|
||||||
// app later
|
// app later
|
||||||
|
|
||||||
|
using log4net;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Data.SqlClient;
|
using System.Data.SqlClient;
|
||||||
@ -10,16 +11,13 @@ using System.Diagnostics;
|
|||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
using log4net;
|
|
||||||
|
|
||||||
namespace bsmd.database
|
namespace bsmd.database
|
||||||
{
|
{
|
||||||
public static class DBManagerAsync
|
public static class DBManagerAsync
|
||||||
{
|
{
|
||||||
#region Fields
|
#region Fields
|
||||||
|
|
||||||
private static ILog _log = LogManager.GetLogger(typeof(DBManagerAsync));
|
private static readonly ILog _log = LogManager.GetLogger(typeof(DBManagerAsync));
|
||||||
private static readonly SemaphoreSlim _asyncSemaphore = new SemaphoreSlim(1);
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
@ -66,6 +64,24 @@ namespace bsmd.database
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static async Task<MaerskData> LoadMaerskDataForCoreAsync(Guid messageCoreId)
|
||||||
|
{
|
||||||
|
SqlCommand cmd = new SqlCommand();
|
||||||
|
MaerskData md = new MaerskData();
|
||||||
|
md.PrepareLoadCommand(cmd, Message.LoadFilter.BY_CORE, messageCoreId);
|
||||||
|
SqlDataReader reader = await PerformCommandAsync(cmd);
|
||||||
|
List<MaerskData> resultList = await md.LoadListAsync(reader);
|
||||||
|
MaerskData result = null;
|
||||||
|
if(resultList.Count > 0)
|
||||||
|
{
|
||||||
|
if(resultList.Count > 1)
|
||||||
|
_log.WarnFormat("more than one xtra data found for core id {0}", messageCoreId);
|
||||||
|
result = resultList[0];
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
@ -75,15 +91,13 @@ namespace bsmd.database
|
|||||||
internal static async Task<SqlDataReader> PerformCommandAsync(SqlCommand cmd)
|
internal static async Task<SqlDataReader> PerformCommandAsync(SqlCommand cmd)
|
||||||
{
|
{
|
||||||
SqlDataReader reader = null;
|
SqlDataReader reader = null;
|
||||||
|
|
||||||
// await _asyncSemaphore.WaitAsync();
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
using (SqlConnection connection = new SqlConnection(ConnectionString))
|
SqlConnection connection = new SqlConnection(ConnectionString);
|
||||||
{
|
await connection.OpenAsync();
|
||||||
await connection.OpenAsync();
|
cmd.Connection = connection;
|
||||||
reader = await cmd.ExecuteReaderAsync();
|
reader = await cmd.ExecuteReaderAsync();
|
||||||
}
|
|
||||||
}
|
}
|
||||||
catch (SqlException ex)
|
catch (SqlException ex)
|
||||||
{
|
{
|
||||||
@ -96,10 +110,6 @@ namespace bsmd.database
|
|||||||
_log.DebugFormat("{0}:{1}", cmd.Parameters[i].ParameterName, cmd.Parameters[i].Value);
|
_log.DebugFormat("{0}:{1}", cmd.Parameters[i].ParameterName, cmd.Parameters[i].Value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
finally
|
|
||||||
{
|
|
||||||
// _asyncSemaphore.Release();
|
|
||||||
}
|
|
||||||
|
|
||||||
return reader;
|
return reader;
|
||||||
}
|
}
|
||||||
@ -113,6 +123,7 @@ namespace bsmd.database
|
|||||||
using (SqlConnection connection = new SqlConnection(ConnectionString))
|
using (SqlConnection connection = new SqlConnection(ConnectionString))
|
||||||
{
|
{
|
||||||
await connection.OpenAsync();
|
await connection.OpenAsync();
|
||||||
|
cmd.Connection = connection;
|
||||||
result = await cmd.ExecuteNonQueryAsync();
|
result = await cmd.ExecuteNonQueryAsync();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -139,6 +150,7 @@ namespace bsmd.database
|
|||||||
{
|
{
|
||||||
using (SqlConnection connection = new SqlConnection(ConnectionString))
|
using (SqlConnection connection = new SqlConnection(ConnectionString))
|
||||||
{
|
{
|
||||||
|
cmd.Connection = connection;
|
||||||
object r = await cmd.ExecuteScalarAsync();
|
object r = await cmd.ExecuteScalarAsync();
|
||||||
if (r == null) { result = null; }
|
if (r == null) { result = null; }
|
||||||
else if (r == DBNull.Value) { result = null; }
|
else if (r == DBNull.Value) { result = null; }
|
||||||
|
|||||||
@ -3,6 +3,7 @@
|
|||||||
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.ComponentModel;
|
||||||
using System.Data;
|
using System.Data;
|
||||||
using System.Data.SqlClient;
|
using System.Data.SqlClient;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
@ -29,6 +30,26 @@ namespace bsmd.database
|
|||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
#region Enums
|
||||||
|
|
||||||
|
public enum MDStatus
|
||||||
|
{
|
||||||
|
[Description("No id")]
|
||||||
|
NO_ID,
|
||||||
|
[Description("Updated")]
|
||||||
|
UPDATED,
|
||||||
|
[Description("Requesting id")]
|
||||||
|
REQUESTING_ID,
|
||||||
|
[Description("Id assigned")]
|
||||||
|
ID_ASSIGNED,
|
||||||
|
[Description("upcoming without id")]
|
||||||
|
NO_ID_AND_DUE,
|
||||||
|
[Description("Has id")]
|
||||||
|
ID
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
#region Properties
|
#region Properties
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -41,9 +62,7 @@ namespace bsmd.database
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public MessageCore Core { get; set; }
|
public MessageCore Core { get; set; }
|
||||||
|
|
||||||
public bool HasNoIdea => ColM.IsNullOrEmpty();
|
public MDStatus Status { get; set; }
|
||||||
|
|
||||||
public bool IsNextThreeDays => ETA.HasValue && ETA.Value.IsNextXDays(3);
|
|
||||||
|
|
||||||
public DateTime? ETA { get; set; }
|
public DateTime? ETA { get; set; }
|
||||||
|
|
||||||
@ -106,36 +125,56 @@ namespace bsmd.database
|
|||||||
{
|
{
|
||||||
while (reader.Read())
|
while (reader.Read())
|
||||||
{
|
{
|
||||||
MaerskData md = new MaerskData();
|
result.Add(ReadRowFromReader(reader));
|
||||||
|
|
||||||
md.id = reader.GetGuid(0);
|
|
||||||
if (!reader.IsDBNull(1)) md.MessageCoreId = reader.GetGuid(1);
|
|
||||||
if (!reader.IsDBNull(2)) md.ColA = reader.GetString(2);
|
|
||||||
if (!reader.IsDBNull(3)) md.ColB = reader.GetString(3);
|
|
||||||
if (!reader.IsDBNull(4)) md.ColC = reader.GetString(4);
|
|
||||||
if (!reader.IsDBNull(5)) md.ColD = reader.GetString(5);
|
|
||||||
if (!reader.IsDBNull(6)) md.ColE = reader.GetString(6);
|
|
||||||
if (!reader.IsDBNull(7)) md.ColF = reader.GetString(7);
|
|
||||||
if (!reader.IsDBNull(8)) md.ColG = reader.GetString(8);
|
|
||||||
if (!reader.IsDBNull(9)) md.ColH = reader.GetString(9);
|
|
||||||
if (!reader.IsDBNull(10)) md.ColI = reader.GetString(10);
|
|
||||||
if (!reader.IsDBNull(11)) md.ColJ = reader.GetString(11);
|
|
||||||
if (!reader.IsDBNull(12)) md.ColK = reader.GetString(12);
|
|
||||||
if (!reader.IsDBNull(13)) md.ColL = reader.GetString(13);
|
|
||||||
if (!reader.IsDBNull(14)) md.ColM = reader.GetString(14);
|
|
||||||
if (!reader.IsDBNull(15)) md.Remark = reader.GetString(15);
|
|
||||||
|
|
||||||
// try parsing the column to datetime
|
|
||||||
if (DateTime.TryParse(md.ColK, out DateTime eta))
|
|
||||||
ETA = eta;
|
|
||||||
|
|
||||||
result.Add(md);
|
|
||||||
}
|
}
|
||||||
reader.Close();
|
reader.Close();
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async Task<List<MaerskData>> LoadListAsync(SqlDataReader reader)
|
||||||
|
{
|
||||||
|
List<MaerskData> result = new List<MaerskData>();
|
||||||
|
|
||||||
|
while (await reader.ReadAsync())
|
||||||
|
{
|
||||||
|
result.Add(ReadRowFromReader(reader));
|
||||||
|
}
|
||||||
|
reader.Close();
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
private MaerskData ReadRowFromReader(IDataReader reader)
|
||||||
|
{
|
||||||
|
MaerskData md = null;
|
||||||
|
if (reader != null)
|
||||||
|
{
|
||||||
|
md = new MaerskData();
|
||||||
|
|
||||||
|
md.id = reader.GetGuid(0);
|
||||||
|
if (!reader.IsDBNull(1)) md.MessageCoreId = reader.GetGuid(1);
|
||||||
|
if (!reader.IsDBNull(2)) md.ColA = reader.GetString(2);
|
||||||
|
if (!reader.IsDBNull(3)) md.ColB = reader.GetString(3);
|
||||||
|
if (!reader.IsDBNull(4)) md.ColC = reader.GetString(4);
|
||||||
|
if (!reader.IsDBNull(5)) md.ColD = reader.GetString(5);
|
||||||
|
if (!reader.IsDBNull(6)) md.ColE = reader.GetString(6);
|
||||||
|
if (!reader.IsDBNull(7)) md.ColF = reader.GetString(7);
|
||||||
|
if (!reader.IsDBNull(8)) md.ColG = reader.GetString(8);
|
||||||
|
if (!reader.IsDBNull(9)) md.ColH = reader.GetString(9);
|
||||||
|
if (!reader.IsDBNull(10)) md.ColI = reader.GetString(10);
|
||||||
|
if (!reader.IsDBNull(11)) md.ColJ = reader.GetString(11);
|
||||||
|
if (!reader.IsDBNull(12)) md.ColK = reader.GetString(12);
|
||||||
|
if (!reader.IsDBNull(13)) md.ColL = reader.GetString(13);
|
||||||
|
if (!reader.IsDBNull(14)) md.ColM = reader.GetString(14);
|
||||||
|
if (!reader.IsDBNull(15)) md.Remark = reader.GetString(15);
|
||||||
|
|
||||||
|
// try parsing the column to datetime
|
||||||
|
if (DateTime.TryParse(md.ColK, out DateTime eta))
|
||||||
|
ETA = eta;
|
||||||
|
}
|
||||||
|
return md;
|
||||||
|
}
|
||||||
|
|
||||||
public override void PrepareLoadCommand(IDbCommand cmd, Message.LoadFilter filter, params object[] criteria)
|
public override void PrepareLoadCommand(IDbCommand cmd, Message.LoadFilter filter, params object[] criteria)
|
||||||
{
|
{
|
||||||
string query = string.Format("SELECT Id, ReferenceId, Field1, Field2, Field3, Field4, Field5, Field6, Field7, Field8, Field9, Field10, Field11, Field12 , Field13, Field14 FROM {0} ", this.Tablename);
|
string query = string.Format("SELECT Id, ReferenceId, Field1, Field2, Field3, Field4, Field5, Field6, Field7, Field8, Field9, Field10, Field11, Field12 , Field13, Field14 FROM {0} ", this.Tablename);
|
||||||
|
|||||||
@ -466,12 +466,7 @@ namespace bsmd.database
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void PrepareLoadCommand(System.Data.IDbCommand cmd, Message.LoadFilter filter, params object[] criteria)
|
public override void PrepareLoadCommand(IDbCommand cmd, Message.LoadFilter filter, params object[] criteria)
|
||||||
{
|
|
||||||
this.PrepareLoadCommand(cmd, filter, false, criteria);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void PrepareLoadCommand(System.Data.IDbCommand cmd, Message.LoadFilter filter, bool joinXtraData, params object[] criteria)
|
|
||||||
{
|
{
|
||||||
StringBuilder sb = new StringBuilder("SELECT ");
|
StringBuilder sb = new StringBuilder("SELECT ");
|
||||||
if (this.ResultLimit > 0)
|
if (this.ResultLimit > 0)
|
||||||
@ -498,18 +493,8 @@ namespace bsmd.database
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(joinXtraData)
|
|
||||||
{
|
|
||||||
sb.Append(", [XtraData].[Id], [XtraData].[Field1], "); // ist das so schlau?
|
|
||||||
}
|
|
||||||
|
|
||||||
sb.AppendFormat(" FROM {0} ", this.Tablename);
|
sb.AppendFormat(" FROM {0} ", this.Tablename);
|
||||||
|
|
||||||
if(joinXtraData)
|
|
||||||
{
|
|
||||||
sb.AppendFormat(" LEFT JOIN XtraData ON [{0}].Id = [XtraData].[ReferenceId] ", this.Tablename);
|
|
||||||
}
|
|
||||||
|
|
||||||
this.SetFilters(sb, cmd, filter, criteria);
|
this.SetFilters(sb, cmd, filter, criteria);
|
||||||
bool latestIdSearch = false;
|
bool latestIdSearch = false;
|
||||||
if(filter == Message.LoadFilter.SEARCH_CORE_FILTERS)
|
if(filter == Message.LoadFilter.SEARCH_CORE_FILTERS)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user