Skip to content

Instantly share code, notes, and snippets.

@jb55
Forked from anonymous/importer
Created January 20, 2012 03:15
Show Gist options
  • Save jb55/1644745 to your computer and use it in GitHub Desktop.
Save jb55/1644745 to your computer and use it in GitHub Desktop.
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