Skip to content

Commit 4301d67

Browse files
committed
Excel import: Added 'ImportResult' return type to import method and reorganized some types.
1 parent 5dcdcbe commit 4301d67

16 files changed

Lines changed: 670 additions & 478 deletions
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Linq;
4+
5+
namespace SmartStore.Core.Data
6+
{
7+
8+
public class ImportMessage
9+
{
10+
public ImportMessage(string message, ImportMessageType messageType = ImportMessageType.Info)
11+
{
12+
Guard.ArgumentNotEmpty(() => message);
13+
14+
this.Message = message;
15+
this.MessageType = messageType;
16+
}
17+
18+
public ImportRowInfo AffectedItem
19+
{
20+
get;
21+
set;
22+
}
23+
24+
public string AffectedField
25+
{
26+
get;
27+
set;
28+
}
29+
30+
public ImportMessageType MessageType
31+
{
32+
get;
33+
set;
34+
}
35+
36+
public string Message
37+
{
38+
get;
39+
set;
40+
}
41+
42+
public override string ToString()
43+
{
44+
return "{0} - {1}".FormatCurrent(MessageType.ToString().ToUpper(), Message.EmptyNull());
45+
}
46+
}
47+
48+
public class ImportRowInfo : Tuple<int, string>
49+
{
50+
public ImportRowInfo(int position, string entityName)
51+
: base(position, entityName)
52+
{
53+
}
54+
55+
public int Position
56+
{
57+
get { return base.Item1; }
58+
}
59+
60+
public string EntityName
61+
{
62+
get { return base.Item2; }
63+
}
64+
}
65+
66+
public enum ImportMessageType
67+
{
68+
Info = 0,
69+
Warning = 5,
70+
Error = 10
71+
}
72+
73+
}

src/Libraries/SmartStore.Services/DataImportModeFlags.cs renamed to src/Libraries/SmartStore.Core/Data/Impex/ImportModeFlags.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
using System;
22

3-
namespace SmartStore.Services
3+
namespace SmartStore.Core.Data
44
{
55

66
[Flags]
7-
public enum DataImportModeFlags
7+
public enum ImportModeFlags
88
{
99
Insert = 1,
1010
Update = 2
Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Linq;
4+
using System.Text;
5+
6+
namespace SmartStore.Core.Data
7+
{
8+
9+
public class ImportResult
10+
{
11+
12+
public ImportResult()
13+
{
14+
this.Messages = new List<ImportMessage>();
15+
this.StartDateUtc = DateTime.UtcNow;
16+
}
17+
18+
public DateTime StartDateUtc
19+
{
20+
get;
21+
set;
22+
}
23+
24+
public DateTime EndDateUtc
25+
{
26+
get;
27+
set;
28+
}
29+
30+
public int TotalRecords
31+
{
32+
get;
33+
set;
34+
}
35+
36+
public int NewRecords
37+
{
38+
get;
39+
set;
40+
}
41+
42+
public int ModifiedRecords
43+
{
44+
get;
45+
set;
46+
}
47+
48+
public int AffectedRecords
49+
{
50+
get { return NewRecords + ModifiedRecords; }
51+
}
52+
53+
public ImportMessage AddInfo(string message, ImportRowInfo affectedRow = null, string affectedField = null)
54+
{
55+
return this.AddMessage(message, ImportMessageType.Info, affectedRow, affectedField);
56+
}
57+
58+
public ImportMessage AddWarning(string message, ImportRowInfo affectedRow = null, string affectedField = null)
59+
{
60+
return this.AddMessage(message, ImportMessageType.Warning, affectedRow, affectedField);
61+
}
62+
63+
public ImportMessage AddError(string message, ImportRowInfo affectedRow = null, string affectedField = null)
64+
{
65+
return this.AddMessage(message, ImportMessageType.Error, affectedRow, affectedField);
66+
}
67+
68+
public ImportMessage AddError(Exception exception)
69+
{
70+
var message = exception.Message;
71+
if (exception.InnerException != null)
72+
{
73+
message += " ({0})".FormatCurrent(exception.InnerException.Message);
74+
}
75+
return this.AddMessage(message, ImportMessageType.Error);
76+
}
77+
78+
public ImportMessage AddMessage(string message, ImportMessageType severity, ImportRowInfo affectedRow = null, string affectedField = null)
79+
{
80+
var msg = new ImportMessage(message, severity);
81+
msg.AffectedItem = affectedRow;
82+
msg.AffectedField = affectedField;
83+
this.Messages.Add(msg);
84+
return msg;
85+
}
86+
87+
public IList<ImportMessage> Messages
88+
{
89+
get;
90+
private set;
91+
}
92+
93+
public bool HasWarnings
94+
{
95+
get { return this.Messages.Any(x => x.MessageType == ImportMessageType.Warning); }
96+
}
97+
98+
public bool HasErrors
99+
{
100+
get { return this.Messages.Any(x => x.MessageType == ImportMessageType.Error); }
101+
}
102+
103+
}
104+
105+
}

src/Libraries/SmartStore.Core/SmartStore.Core.csproj

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,9 @@
138138
<Compile Include="Data\Hooks\PreInsertHook.cs" />
139139
<Compile Include="Data\Hooks\PreUpdateHook.cs" />
140140
<Compile Include="Data\IDbContext.cs" />
141+
<Compile Include="Data\Impex\ImportModeFlags.cs" />
142+
<Compile Include="Data\Impex\ImportMessage.cs" />
143+
<Compile Include="Data\Impex\ImportResult.cs" />
141144
<Compile Include="Data\RepositoryExtensions.cs" />
142145
<Compile Include="Domain\Catalog\ProductType.cs" />
143146
<Compile Include="Domain\Cms\ContentSliderSettings.cs" />

src/Libraries/SmartStore.Services/DataImportResult.cs

Lines changed: 0 additions & 28 deletions
This file was deleted.

0 commit comments

Comments
 (0)