-
-
Save jb55/1644745 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System; | |
using System.Collections.Generic; | |
using System.Linq; | |
using System.Web; | |
using System.Web.UI; | |
using System.Web.UI.WebControls; | |
using System.IO; | |
using Crypto; | |
using System.Text; | |
namespace BrandAlliance.OrderImport | |
{ | |
public class Field<T> | |
{ | |
public T Value; | |
public string Error; | |
Func<string, bool> Validator; | |
public Field(string s, Func<string, T> parser, Func<T, string> pred ) { | |
try { | |
Value = parser(s); | |
Error = pred(Value); | |
} | |
catch { | |
Error = "Can not parse field"; | |
} | |
} | |
public bool IsValid() { | |
return Error != null; | |
} | |
} | |
public partial class Import : System.Web.UI.Page | |
{ | |
protected void Page_Load(object sender, EventArgs e) { | |
} | |
public static Field<T> ResultField<T>(string s, Func<string, T> parser, Func<T, string> pred=null) { | |
return new Field<T>(s, parser, (pred ?? (g => null))); | |
} | |
public static string IsNullOrEmpty(string s) { | |
if (string.IsNullOrWhiteSpace(s)) { | |
return "Field is empty"; | |
} else { | |
return null; | |
} | |
} | |
protected void btnUpload_Click(object sender, EventArgs e) { | |
if (1 == 1){ | |
//if (fuOrders.HasFile) { | |
//string fileName = Path.Combine(Server.MapPath("~/Upload"), DateTime.Now.ToString() + fuOrders.FileName); | |
//fuOrders.SaveAs(fileName); | |
DALDataContext db = new DALDataContext(); | |
string fileName = Path.Combine(Server.MapPath("~/Upload"), "test.csv"); | |
var data = File.ReadAllText(fileName); | |
var csvResult = BrandAlliance.Parsing.Csv.ParseCsv(data, ","); | |
if (csvResult.IsSuccess) { | |
var rows = csvResult.Result; | |
var items = from row in rows.Skip(1) | |
select new { | |
LineID = ResultField(row.ElementAt(0), int.Parse, IsNullOrEmpty) | |
, Name = ResultField(row.ElementAt(1), s=>s, IsNullOrEmpty) | |
, Company = ResultField(row.ElementAt(2), s=>s) | |
, Address = ResultField(row.ElementAt(3), s=>s, IsNullOrEmpty) | |
, Address2 = ResultField(row.ElementAt(4), s=>s, IsNullOrEmpty) | |
, City = ResultField(row.ElementAt(5), s=>s, IsNullOrEmpty) | |
, State = ResultField(row.ElementAt(6), s=>s, IsNullOrEmpty) | |
, ZipCode = ResultField(row.ElementAt(7), s=>s, IsNullOrEmpty) | |
, Country = ResultField(row.ElementAt(8), s=>s, IsNullOrEmpty) | |
, Phone = ResultField(row.ElementAt(9), s=>s, IsNullOrEmpty) | |
, Email = ResultField(row.ElementAt(10), s=>s, IsNullOrEmpty) | |
, SendUpdatesToEmails = ResultField(row.ElementAt(11), s=>s, IsNullOrEmpty) | |
, ShippingService = ResultField(row.ElementAt(12), s=>s, IsNullOrEmpty) | |
, SpecialInstructions = ResultField(row.ElementAt(13), s=>s) | |
, BucketCode = ResultField(row.ElementAt(14), s=>s, IsNullOrEmpty) | |
, ItemCode = ResultField(row.ElementAt(15), s=>s, IsNullOrEmpty) | |
, Quantity = ResultField(row.ElementAt(16), s=>s, IsNullOrEmpty) | |
}; | |
//validation | |
//int counter = 1; | |
//string errorMessage = ""; | |
//Action<string, string> ValidateResult = (name, value) => { | |
// if (string.IsNullOrWhiteSpace(value)) | |
// errorMessage += string.Format("In row {0} field \"{1}\" was left empty. \n", counter, name); | |
// | |
//}; | |
foreach (var item in items) { | |
Contact contact = db.Contacts.Where(c => c.Email == item.Email).FirstOrDefault(); | |
Order order = new Order(); | |
if (contact == null) { | |
contact.ContactName = item.ContactName; | |
contact.Email = item.Email; | |
string randomString = RandomString(8); | |
contact.Pass = Encrypt(randomString); | |
contact.PassDecrypted = randomString; | |
} | |
} | |
} | |
else { | |
lblErrorMessage.Text = csvResult.ErrorMsg; | |
} | |
} //end of .HasFile | |
} | |
public static string Encrypt(string encryptString) { | |
return new EncryptionMethod(EncryptionName.AES, "Ah63n2l7!0dj3tbgj9(973h1FSD5%3#1", "5901DAS3978HJIUS").EncryptString(encryptString); | |
} | |
private string RandomString(int size) { | |
StringBuilder builder = new StringBuilder(); | |
Random random = new Random(); | |
char ch; | |
for (int i = 0; i < size; i++) { | |
ch = Convert.ToChar(Convert.ToInt32(Math.Floor(26 * random.NextDouble() + 65))); | |
builder.Append(ch); | |
} | |
return builder.ToString(); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment