From f9844d0f38177ca80502520bc5eda21ac812d493 Mon Sep 17 00:00:00 2001 From: James Kolpack Date: Sat, 5 Jan 2013 15:02:48 -0500 Subject: [PATCH] Import users during migration --- Notes/MileageTraker_UserEmails.xlsx | Bin 14374 -> 15739 bytes Web.Tests/DAL/UserEmails.xls | Bin 0 -> 44544 bytes Web.Tests/DAL/UserImporterTests.cs | 40 +++++++ Web.Tests/Web.Tests.csproj | 4 + Web/App_Data/UserEmails.xls | Bin 0 -> 44544 bytes Web/DAL/UserImporter.cs | 43 ++++++++ Web/Migrations/201301031939259_AddLogUser.cs | 109 +++++++++++++++++-- Web/Web.csproj | 4 + 8 files changed, 192 insertions(+), 8 deletions(-) create mode 100644 Web.Tests/DAL/UserEmails.xls create mode 100644 Web.Tests/DAL/UserImporterTests.cs create mode 100644 Web/App_Data/UserEmails.xls create mode 100644 Web/DAL/UserImporter.cs diff --git a/Notes/MileageTraker_UserEmails.xlsx b/Notes/MileageTraker_UserEmails.xlsx index 6194690098b86288ecc9544e2eebcb405059d389..8c57f5c6ec008400e190ba790d62b7c8e434ba7e 100644 GIT binary patch delta 7591 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 Pl0;ofauDFkTwDAXC;OrA delta 6246 zcmZvA1yoc~*Y;3SQUXIMARUq-(j5XrcPb3s-7s_xAYDV}0Mekq&?P7>AxML?zz|A* z!}tE{`(yog-L==b``P>4bDw?oK6mXK|8m#*czg)2`WU7SCIApk0058y003V{9uHe{ zcPmS6Pj@?K8xL+@C&xg2)g*?u#GQ(xkoqq+Sz|9_8KPzFE?e& z23uWsOGw<$)xBHFA2oGiT)8_5P@mO%(Dt}o&0MG7U8g537!j>j$oG!Qm6jyLz5{*< z)jfdaG$u%(IsdFCH%UU8mGH|N>r+_a8ADS3<{Z-r`#b%JVUJT(bR8;q7hU@^S@0;G zD^OYHAchQofRX=A83W19SBJ*^bf@pM4nIZ@#L)cuGiGy_>}g;}{;8U; zXx=bFQr4}Q*WEQp8MRW<&9L8K!y}}ZuNzNmla)rq_GIpY)Z{bYc+Y1Nh$o`yvnP* zh9bjr8m2OcmjBu4gmN$B36OG@iq`RBxOp%a8Uxd9rGQU(|f>fljea zq7yv%`UG|wT$fLTqcPBvU#-Bk3;VhVop8J#uB!dHS4>P!6j$r{abo_x5%ztHWlBT1t$WKpy@**=2FbI|m2XvrussBY6| zJzb*SNK+0G8*D5RZ!f~QkMN}2B8E5V(i~yw>Ju}_;#J_mSAA83`l0GNWW-hQXMbGBu(%z9dh=qJ%eT}8{PYYCSd_wf*%9lzy69w~RXkiei*GrK**tCvwU59a{PboH3zWzwU8AYhdq zmFIxK3{#s(`0$6o=rwL%iJF0W{oh~UNf9l=qtcKd*&iM+u5g5hMjImbj|)F6$GumR z`p_#Kl#$RREsUc=!Mx}N!I;zkkWxe%|55Pc=eHCKGROFP1|1@B{daQn1w7F6{pZ%k z^9_vNM1f^P%`^;e4E|Z)zlg?XSYTT zh6D+|%a9-XVM@yQx%0C#-KD#pPN>vf8m->Ls2r$y=xV_lPIL5=iBJ+-WMwl8+MGnE z)lUa#x*!V2C!7Nl!@d#%08T~#03{$*RE!z|gSmJt2|gQIUHu+}onXfNI+i)^`k-N1 zrL=Sml)KX0dEgKi#$=RM$;i(6r{XwlOKUCcC-Wb9nx**YEsT%_I<#j*l7XT_ofPTT zn(qFG0Y3e~>Un*ZqNbL+M7C#gNKvz35b|U>iNf`^w9u_ zYlQaY!s^b|RWR?@zD|)RKTX~BSYsSh&ndS~9NK9tcXY6FWjvwSCF`ytLQkgP?`hX1 zj@+S^9SJfm%6;E7^N>h-cwG4NTFE8Fou^6OPdlFfp)8I5b`_NMe8M%xi%jv#!EG}5 zm~sX3GcQHJV0i5&_bs7}nD=SC*FP{Bq+BV(@k~_cS0O@U>CB>@vL`v8R**z!a&|>! z_Ojujx8q@oChYN>(0fZYaoJ|u2&w2ySbUNx^uX12Us}8@0g0Yb zE5!3u{pDh&&w*cryEfoc5-VY!HQ<@ui^%oskCY6b;g{)t*4LdrncEQN#vB4U1vPb?+VbZHe25e!my36Z zfSl^|cU)QW=Z`P(xNFQQYpz$*Lx}Qer?(cvYYDxQ^Du%oegCe0(ydf8y~H4kiW@JC ze4me4KQ})?C!o-qN*dcmP?-vrY+8HHLe+An)W>#f5(#_cj^zHu5|rf z={j3m_2~|}I;~*1KdY$II6S(sZu{)AD)F?n9T@IK?PzhKTvg(S`+Fp_#ODqI4=i}% z|LS07^OsC1p4ZXt+}!6pLx)Mjj(KXbt`v*1{Vr(+iIPe|hie9v^F7EICjdJu-!YlD<74w6BH2y#pcumN+#W+*&%` z+?vx~vpKj7@7~Ktx>=m36~m^q`-BWwGneyq3^%F2kJlVfS3hlmXnj&OwI{%vZ&8Tq zwIbgP=rO_)KDw?UJ|dGD!DnjzBM!i$*|U(Ij-+CSTN(};R2<|fzYk+$R2^34tYb_6 zWxsnEcr3HNc*G@79_wK^=qu^aVpg5DV4iMUp`+{!!VZyFhbyOQ{~9n!uCooDbjds#6vDbP}dh0Av? z6+&T#lj;C5=HHijny%9*z@IGLT&lAA1Z(su<@Rx*Mx-XF;LvcfM}Z@)_+=`kr7Q~{ zv_?3Id!T-#m~qfaJp1x)sSc@)BQMIr`PCbwN2#et>17_N3S>o7l|wXMmZYQHfG9UE zC>s~FOEkb-?9PQyGvAnCfMZIdh>Re+nV!ZT0}YOnl8MkGvK2`gXex~~1gZ+4(gyTahQz?zjb>;N%?blD5EPMpNe!`d;5a%;E3Oyk zyh_n`+-sVT+uB{~?o34&Oe#D?Cd@m!^iy%Y7daCtL>Q^XFTfWnD}c(D6~*EnRAx@9 zq!|+#AsYAHqGi~r`K4tAEyIQ)!iGw}@qb-!$5t#IK2;XbK{3K&`!(u2lSEM=pIy1{ zbO`5DNE5G{Z9xUsyA8!4OnTf^{{~MBi}1s~fvDIE%>KYq&^a4hwv7K@a`d7F(>Unnd^Qpucu_D5=rSnAgL@3sUEgm^-V9lf+Y=^ zwKCgE)P^Zniz!r@kKrwg3DI1cE`eXQ5*Y|P z^`kx(?NLwuw6{9OvkRs_7uBpKur+|Mok~%jMu7@tTq;EiZjH}&2LR){5AZRXe7nc$ z&OXnWpFol2*_xxhY%Y!k1LvIjW-Le~K| zOLua(6(ko3<8H@S4P!852X~NY$;BR%sF&vUz!`}I?dKJlL5!xh?v%Ln-L&5});R@J z0!f;!>ah3g{rWe_@$-7i=q<(U6#|m4XKtb8eozRq`~wfk0(oSjlIiqq+heVszWok5 zd!6%}Z`2qM;~!?^G$qfVHAh)WS(|pseAz*Vom#4xf}cw6mSs3TkG#rb#M3r*tm6u1 z$dWWyv<{d^QQBpe?B8m8rkPzW&s2|5iCrdL)748TbICe)_>D5XI@idN6Sau9Gmu*t zY8A+#^KaQFD|C6!wgz|c2aCBXm?Yn(-ojW=P%BaePd%I6)NXUo_P-%Z6m$n;2|z*T z@v+|d8!fw4({bf6UkhjC0PN5H4Ah8*#_z4@uzy=1ysLfAE~ZDqBmL`3paHY3s`kozhD&t7cMRp|Q zHr%(Bh^0DBxqW2GQRv`>AU?7!vK@{U2C{g(vbA@X6Ng+U+~M^HCgF)lf_Y$-GMQao zuX2L#$L2ET$ExKF8 zMUIf+Ukjn=2Z9{r^c_U9=8LNzf0+J*C=*axsc!EG)X$sy+HJ#8hd7MV+?>C!Z;=!d zJ9e)7d!$LoS98vF8S5Db+;$}P8IXnf6&v%1G#BOt2c5h%dBcT-c#!sqzaxh%PmTuz zs=(pZ$1Nb*nWOxC0u0p3S`CJzjE&f?*fRy)!ud{hvxwQ~+O``pxq{4>)wUiu^g_Z+xGR%IyeOs;9mLEQ^y`*ox-7n|% zajqiP-DqEGE}q zx~p&9|1jHO(zpQw7$h$z>eFSZ<@~xoM|VG9E$KWt-8XT>u6i3hUUG67;7{j7d$X6R zdTK9I`dLyhSKThBw7#kCit`UEB7*aWvDo_!z*}MFD(Ozm^O;pt-|gW61E8UTfk_5< z0>D8%zXZ6>NqAH>R&a$T zu3?kr<9FuXqOdR1di->)-U$So$BqO-j9brCPC&d9uGr8qDLL%YHH_)Ng>r11#3D4@ zQBfER`~9VV{q&t*5ky}>&G04S5*s=HT#@b4|KX0p3ZnGa9Vb+(WD%Xd04*xj~)>Vjoc)U@YV~ z8Tnh;_5WqkAe1q$1;t_@F#v$NAA6i&b4ReOt+}1^V}H{#OWJvfmstKUmOr-ijRKHe zQ^#BspGI6d0MM%k#>lWVQ24mgWlwV7^I#*0hUEX3_S^5>>w_K0=k=7%%g191drrkS=CgUMbgKS^zxccwzOik%RSjq*2@lASVv7ZIvGy2b>t>-O6@TpPwR2)9BnY>AJRJ`7Q-bFz1=?h>T12T^*O|GTG#N`n8nB2z`gIG_KY)rRDMu*X3-M{1}TBvlPwKsxHu@o7s z)Y{eU8?QGxckiRE&ojekC<|hjtLm~49o>SzC#u(t8S<;D=u-X7#NQy*e*O=6pso!S z8B&L34tO>6-~kH@31#d&v$98m58|7#50PfDV%CtcR7at+#6H^NE_P%W*#G2DA}@o( zLS;a)*bw|>VVgj0!dmf?HRa#U`1c;px1WCxVND^!*!%AH`VQcKS=bcoFwXZk{@sCp zH^R4tJ;`O><&-|GEqf0VHny5V-OAd8T9TN9xtWV)F)zLYIPUo~Il|O(n4olFFZ)Xx z#O|q&l6qJfFQpUTb~c7N**sr~gJBuj1Y=Ef8LT$p=+5#X9jBG2p}{Y9mIm+Sv3yp_ z5u+>?aPOzes|GRniX88uc52o^b=5>GQ*|{l_=+4uufSnp@v1Era}*1URXI$&C;S_G zMU=W%)KTvWI;^aP%E78DsZB+xhJ&%X)#_*)+=kTw2J6tNL&vC&9edB}HfTnqdNHG0 z+u-&XG1^G^)5kk=ZjhNeuuyiLpDDVxtOwVmsw)~|2P2n3n~$|W>(2TzHj9eV-L96* zcR3@H6J~T9`8V zKWH55fp+2tRpm8YRhUEjCC{-i#5`j^RoVHk_&Q*(rIRQA^M0_PAJslqq2C4q_y0a$ zPVh$V|3LblYUnGfp>L>$zNH%au4?H2sD@r$dG4x)|DkH=)#(@f=p79H5&VI4QJz4$ zC{G~0I{lCGat880T@AfD{>Q7~f3h0-W7W`~uZAwlQzyVb4|Dz|D*etTP1e<4SDyt7 zKQzUshfc2lN1u9M`@&36(6#s% zaad2Kzs)ijTijA@kM$)w3s>n4{B%4145S-yL&5YTtv3vG1teZh&2J*EXcoxnZ?oC> zv$cxbNTqA#H^lj-CQZWYhr|D(Jz{>W=@%gPo3vE5w zLWxe9R?PCluo`wJI@_wA&ZjA`MFVfy1ITDssH4B#<{=<0ZZLXn+fC#=;Fl_P<@Y z1SqMlaK_%D2Y73ApHU#{S_OJut3dR%3Jkhdfx(gh^+sy#QI}{5tQO4ZebqwDMggnM z*SS(R<&PO--C`MYWhGVdH7kj^8YO*WWF^KrjD-?^r3aW3Xn$`Fm4~pyAHsYLQQORs zZ}e@(X#W67$tGttN~$hy(lxw03=J<1N#kWwp-Ufq^R=qcxPAL} zO^F%MHvZ|!|E|+HbekB2=BOeDbXRf|?g*qj;F!xE#N;+MQ65I#@TlH~5 zE6OXHRtTBc!*0*2(wgoz1+=~4rXSYU9N5NGaJUwvf`)657H8wk_A z1{hj`_?#B%%&q#q(i|qt2-7bRCb|X~TBrM9Y|h-%=f5|HX>Npx3xw%g0}QQ7d@yyL zxgUP>t~pFN!Nk@aY3%?LdlivZnfBbNugzgv7-38ztz!)^`beux`}viJ&0$&^VN4>e zYYi~^NUKacbLNaWOe-UdNu>3t0Y)Ebm1$L<+-(li+6ZG3X}xNI(MMWk+P)*7n!`jG zVN4<|rUn>&q*bOJIk(RorVYWw)f{Pdz{Fier1g#2c<2)WLme7ETAy~E5ym9aI@JK9 zkF>rqKR&X=9Hy-i#w5}rYk<*5THlys$Bvo9v@^n(L|Rl0F#1UA8&h>U*Br)fgfWS< z-ZjAJBdu@Dst0}T##lG)jW8yW7Fz?1KGOQeJov^cGiw^)K0fAM+PIlu7&ou03axgm zWNiAz6Xr@g`jsN0j7r-ZlbCE|!xjy5#b!CnOIs*@k-Z`ykI^(2jPPy;t3k{s^r zGPk4D)t#F?#ZoQ85kbtz6Jc`yZ|l?+W-NGWY+sQ|RS!~sGW_F#}n z`xzE6>#uCmRbA<7tyRJC6YTCM{;{&M4= zzEq~+qn3*HpF*@!i7T~K;z})*xLS)Ht{#hns@B--a#898!E`z-R)~KN6o4_}janQ6 z-be#)2#$dIdF^aEMuHnOnVyS-A=AYm6I^A33>`)D^0{v|tI#B(7l%S3+8_~H)gVAZ z#%j)bVFu1p<`=siMUGOBx5A$3oL{=eHbPcq?N`;9rLg%pu}F1a#OvRKf>glgnJCVD z!~<L6LKrFB&>8v&bgKj&QBD5f&Lb<>>p2 z%A1%d7yVx~%B$l4QTYW7A>}c8<>&*A%A1-f7yV#0%Ei>c%9Y3Jm7^~-bO=GsOq5f9 zC~8b{3q@_e#WuuKtXx@E8&^_+AfTg=bbPZ2jgGcYc?r=}>tr9ST5GL`nGN=hMimv8 zA(YAtTEgIuQIIS~EK|_&w*Mi?+x^;P?h?0LstCILk`C4s=h3j@{A*9XlNuB}=`CN$Qxy zQiW`!n=Punn{Y?Q*I*Emiy7P>BbU{}067LN#mhSwQst{X3;u*Qt-W1O?QM*w)Vao% zCF`)(Lwh3~r6?4tOY6C5qg(9~X_MODQHv|JOB7dXmng2*TI=KB9yZ0smX-1vpJxDV z4%K714+864KV(o3E7ds>{3Q`rYDvVES`u+Zp*v`C9r&)3T!cDxP!SnCY}Jheav6o{ zU<%btSE(D`>LW`9DX5-IL`Nwqj{FtaS}deu2v^}Lr3f(WT?Dn_D#+oY_Jes)N&6Gz zceNi9)~Z(&VolgkGzm7@;Vq&rPjt`mazU;2(bG=`f)|0T_IhUBG6fy?@G9FBwo13j zLWf(L;9n+`WN~XJpvV>cuXNZ>ooN~3t}ndkV&y!7{2cmI%5iKqKl{BDR$=tPCxlJN zcREY^Y_PRt8+4c=Y{lJ|`*2?VK3yKktwb1G@b93-hQ!zl6Rhla_E^YVVDRktc8yy)H+Q zeWbIf1lPptt-y6gh1&@=Nhni=J;UqDc4Dkea(La&BBy=4C(Bh-;wgf%Bu8m}g+0~b zE$6UF`NUFUPjQo~q^wrH%Zj2Lvdx+8azirN zQSQpIPjD5IExrr4$58}7B|Eb`UPnIEmX?;Fp496x9xn_eS*O#E3%HYC6uC;A_TirS zBIScqDJui`n_TVJLQXNHb ztUbx&cES+fl}{NbR1lV%Dm#lRI5o+h>?$d8R#2uBwS-V`!5c+RSeok0&9x^K02t*+ zb$XqMm^8;clnWl@Y7UHPXbKhfsh+Z;Qkb6RDD$H39BwyMV$4J{ zO7wa>1tr>LGIsEZ%<|J@X3qbLfI=DT!gjdVFUI#fj9dS?shzW%#DX&COJn*Wo z9uRfuuIzjVYDxt{MH2~bK@59cr8jayfzzJhC`CC?x$slErwG=2+@&aH2A;@qJM8Hm zl#VO}pM5I&2iS`e;0m_7P=tI}Id6s;&b+(|J6bV1BNESdxn0HfWKWSOU`Bq08-@0{ z6B@?z4k5wqoR2@8UKDw}qoUALl*2?P1Q0bK}MP_hG24-=^$@sSWR#GUV?x*svGg6#8MO>jEgXrV9* z-48k})jPnRQ0mA=;5tgs(|DWGwX+yOj?N|>jU)&02eUX40Szy@<~gY4X2KK)dOior z04;r1oJD9JdAu{Bp3OcI;ev8Za>4{xHuwn)T`TOG?5My( z1x2es51Q(Y1_qH}Dkot8nONfV7NPzysHYSblU4SFY?aaYM zsUX)gAO0yUalq3Qf|$w7D<%ZY?B?OAEc^v0l{ku3hX6*EM@A|dIdw6JBWgxk*a6v* z?HgvQ*p0ZkmD7vSP|nWccPV}|dov7ZjQtb8UJP)f`Y`q#eh=c;g@X)3u(r5>-#z%9 zjFn4AEC*h}?{54~Ldl~rgMS;pyYM?62FGGE;ywI6fZq&Q5rln&hwz(i3r7Nw?-TC( zwX(Zx-5T7b%b|>n(Lups7_^Dpo_+ql@&aZJtPRS67R#n5VJyYiH!HKE*jaKz^!!5i zKkj&C%;DaRQ!b7C{gw+oQ#b7$X6yX<%|}-q-L~Ms%XfDQKlaYvofCh%ly*Eb@d10d zJL+`IrOksr@;=ut^zp;%H|OuY**I*_{{VB zBl|B~JZi;;@!S9MNpW7<-XW`2d)uwP|M;&1tgrMd@3Q!h#f@Gq8~0wzi!1IJ@X@iP zQx}4sc;vb%L%zQ7%lb|quHN@deB79Sq$b&JdF;TNx4(Sgm*L046Qlq6bl0Dv@9(kV z-dCp{%KW9(BcIK5_ItD61Ml0vufMYC;YS**nDu&|y;aXoUKq4_#g}JJPId1;yK3*M z1#vSg#~iE*oBdP#XU*QKTr_y7TI6hPwxEm0Q?k(dPH!rSzf2Rq*pY3FS-5o zIfr{USoY1*=Wcm(;ke_6TXrt*wS9F`ulp9V^O1}4J4Bp`xOisl(U5x2+Lqk^&7}v2 zT;BcHU(Vn8sXctdu8_kYCdI#!f4+Rk3yW?(w)Fm;oo&RepfTR(-5Kh=Ns z?%N+YR`uB7-j$oj9$d61>Ox9zQU5#BTpwrM`#`UcCOo(L0q3r_+rIJmQ@@=21EvHT zT2OIU_$@H-HY7SM8HoVRGYV`6azg-ZuGva}FN49w> z%6d z>h@vE#U5SiSqGRGK5TmLHus`sjK}R@Y7M$#3lsWKvA>-9`t1?@!k+K=UHr;VHh*%e zveVRl(>t%dzy8_6hr0Cq;>}T;Rz|!&V8h(3sC_)BtPV%UpyRz!pbXU^#yePPek z$eTO-H0#{yn7iLuakyymkg&JUjz03kbDzHc&FK#wJGySqd&+}lD?eKD$OEo*z5ed5 zKcZt?mpAvhK4|-6y|Oc@18zIAe6OwlSDnXv+2gl%|5e=TtMAydcdWlfo=!?1bZ)`( zlcTzH%pZQNbKKD;`!_x^Ah}K3k6d%x+}G^eh~rt?GrzyBeTO>=QzC<(?BAtX-$N&d zJ+<%B`qy?YBeyPDXVqAKasU^4_!st*0Md9#{BTUgemOpNBr#^R}jq zdTl5lb@}v5f4q{iZ(XZ#&mW%j=*43%R7S_Ne7*bL*XIwc98}ik)OXXKUQ~DMf{0TO zmp!+8-EV7IZ0my~Cq(ZW`{ddDdG9rNXz}qaAs^f`ZRfO;-`-aBMfj(8^|;(`fAIFp z_w-z_=hLJx`g{Jo`rizA{I+lM=hsdB?)~uRC(S9_wBgouTNkg%e`0C$(=$)Z`di$x zw3b79ABx!h)$`GA*~lH17H78(S$XFr*ISXN=QJHM?O0@&lK1z;Z|*pyMZumuvwr{i*Oy{0{`A+K zJ8$2-W$3RLe*EsEw?@S8d_MMYP+0oJ!;?Q)^xdT=w@h0!6eh21-)i-}ad(^?9@=Ti{;2fe_9v#f zSA9LDaCrKCU!Tjqu5NwnxS(GwJEpbVv#rjEdyidUOEVk(-2TIxR^%*db$jNF{^wVJ z-fc(a7pvy3S??}-vG>f*pPw2ww9*y7?UjrXM>bWa4ONPPwCO?c8R+FaNwp^5CSl8T(?+&a<67zVM00?}c2*?DlZi_e_?R7|KDlwjl#;s+ zJUA{cVqyKkH!K<9-n4n(E6%xx(q8JAu;A=W?+@hz`g|Mq)rpf`AAIk*oI!u@`hIhZ zBOKF@9r8GJZkfv_W2=Ay*ZwxDTfbii+*p<_{U$eK5${`P1mid^V_Z+ zUk#jX9bW8C47)vL^YP3*dwZ z4NttgXkgt|t)?Dc!~QlmZcxg_iv0bq-4Pe>obzLH5%pJG!hPQ9FP{HIPI9SgqwsSV}Z zQ<4WR3|>0+@k2jP+Ayn4RMctf@w3X2t|wPVe>mN?WBv3Ve`TviS+~sprz`eo@bjsk zBtEfuQN+@2Yj61Jv8|huT!Xg#z?{ufn*R_My?yY`j$6KO89Da!`u1B>NA67=u<17I zLm?9%+EH<0?v&FwV*3Cy>&nSC+T;s4g7hj8=bMtpkG^qdTYtw#u_tDnpTD|?+ zgic{6E=?-x|KVMyY}xbPn1Am-mGX^`g>UHc(8BF2_w9c^!_)GeZ`&>(5&Hav=*Y1- z-OpdP4}YZn7q1K%)ji^oy$ET z#>{PZ_IS3}xG3wk9}Yb9W9t*c&-94h_3+GtpYOZ4^ww`4uYcX^d&+LS?t_Q>->4K` zoO1I$lTOUrU-aC$zb|~@-2Bc7FT5Z5_NLVB7v7%s)9$x!TwjMc(oCj#SjSHqwtrXhTo(~Zl%X-Rs$L%qY6T)KIl&Et9NnZ|c?IlKIg zhu;ob@^Qb0aq*qTefd?x-BGsaWsc|Xc0If9o@33j`@Y{Ne^+bUz|a3acf-NLr@mY@ zY<&2b6{iQ~JTm*{Ri6G|HP5?abYyy$PU9n^`>gji>YBQC(;K&C{<3)YfctKr^l^v# zb|k#~>>DF5l`Y)*-A2oTmpVO{)%Y(bSgX4-HdHqKrl zQhBc9#$9Q_|D68JGcSIinQpQ6#0k>s=BZ%QeN1Mp8KY$d#)+F>x;Ol(o5mRhjT0fi zU@OcJ17;RF_Zu}CXC;13C(ShRIf_w-F$nxR9>Rh|Uz!?1B4czNOpa)OxDLAk*6+Z= zhOv#ClBAl#xUlb&DfE-j6H~{P} zIR~+vVXQgQEu4D^|Ly|rT>kkao*s!;|BlqOd=}qL_jfvL4Z{+##Y&sGbjOk229b;{ z&I}w%>yMjUbVQBbqP)Fc$11+S-aSS%K-ndxXPYM?9qqhEfBFY1NF?k&~O zwSShpA$&kcz7O9y7JuicH0~$uqQ*Zg>{;t_s(Am0E2l3n-*YEK@u|Wc%~1YNWxh%M z1HWWZsCtcav>(&D9iOMLrYolN*Z9yi?4mQqj+3;5KR|?#hqo(W%Qn@|8!FIri>YpHfq91 zt%QjvZ900$81$8~=qIC5{wYZ6hw{_FF&qb%M1C@^)6{H8j7RE^zP7sjv07go4gZWm z`rrHsWj3k5!cAV@gEUgRssDwAKf;!yRHA>j{0GWOQ;nYxFeavQ?FoD&6}L}Kc&>^> z>i+{py(+AKg^AjW@FKQ>0TVgw4hCh8I70}#PH8s@#-($vxY-mn+&sMeGvy^V_$qGVg_Pk3;FE= zP@2|PNNGW zjS!7A++uuSz7fh(?&6mo|}=rxAZ%~I|5udI~%Mg`(R4V}UByTgVZ z7b_Kv$oqq*;xY!yaMo+A&+iCrUIEp4h-dPz1QFVLZZi*M(ZMIO2f$PiEdX$D#pof< zD;q>Q158fA%K^2x ztE&g(aVL0XJR0sWF#9ZojD%NLk0&h5<0sJw5Shg6RxL!o>36EIP%z7gG?*%Mh?vJV zb+&q+qK{I8Qmscik%40(1W7#@xJy*X`g%xFk3Mc0lLl)A(gG7w5@vlpCbbKeRg435 z1c)qRb*g|3^ngt%i?hmT4LBNMk_w1OXbtpeybiN*E-;(JA&+>oRk((FI9`W>SH`0$ zhQcRsga;W34;!6+k2WC3XM24o0tGvVbg7Vy^pL!B(b#2Fn#3q{G?H5hF$onf=k=rV z$jP3=j~x;wy}1`=YRwTtk|A<@%rYWGAV#>PgvK$V(1(T*^!t9qQ0nz?K8{BXjR<wmeESh>LT#B$DVbGw%;t`WwfOC_Am4ne#f)}fa9*jo}XO+=tQm4?+z%7G_ zgocf2zh%OgH~@x&nS@8X)-aAgp+RnFs>kE4Fk3Loh%{wXXdLB;5Rwq_YGxy%hoAi< zM0#&C5VdySED%vJ%ZM}~RcMmJ5g{ZY;x*8IMA0g;>2xUp(kr3?sD)^l9#FIj&MV{5 zWLM!QiAV=zBs{zq$dAWsFsB6PR|PAF(>j^vdN^K#oK;4nX|w_qVI4#ywB~v=Ze30Z z9grnBExe!7Jm@6kXxB8b}9ZB)srIyaGCaD|k7cHu|;*#N)g&9!>uh zeu9N`Kt{rAp~vG9np4CN_zGqju%#Z5N2rfkMx@1sLa!?3@d6@&MOikGKraQ zWl)=FWr_%98IhJQ3cm?KN+2X5;-%&Oh~fQ94$kulP7ViYQG>1ZaJ+vZP8o}qL<%s3 zb&!y-TI;cdKMVOWXo5o~F>CFwjUG<;Q!vYjwBSS1&OMLzKtK%BSyc6!hj)S3ACWn5b9Dv%erkdtuR>2bMt^X7;%?}Un6;@0Mgc0DTh zuFCDlJcZkjuVS!pTL-Yy>>PUrHw9kB1m4TH4ojh|7^68osa1q;q7sF+6^TaAiV*L7 zz5!%Msg0W-?M-MMOlTcVXq`-GolR(6OlVzAXpttgZYH$uCbS+Vv?vo=PZL_S39Xk2 ztv6_O44XoIOlW;gXfY$t~a3#G@%VLp$#^n4Kbk&HKD~D zXtcJrgQlPrh_-|1m)Z{YAN>6wAF1LL0^?H~-LZ*g=oU zd%`(c{2>>?EO!qb^^m+L^fAkb)G`%l7G8yrgxFD!$VZns*?7Ew@Q_8U+6t?a9*>VM zoK;4nHm^Wbpg}}J>!e5X`PAS4A(yzd{;#th(C1UZEn`xjqA)_HVna&8?5xLZLTRgcKWwK;hFKs?$+pvWhFEovk6pnP2O^UJu@_bU8I8R>zXgd3^H zem(E2s|RG)7n zROA!C)_kJ%sKQo_U&f`eR^csx^z<~~VsF)NtEgkNTRdSSnB_W#u-{Zs$AVc#q>)@f ziG`&osbp!i9#MD~`!V#`9zi0PxV7%EmmX5|PCjlKvlquCTS*I~B+OoVOka=BpA8hu z9C99HdDH2whxGOMoLNSsd5D7Y3PcD=h`sfQyvHw~=0JGJB37;C^wHz-9-p(yXf(r7 zV3$CHh=kThkH&k3f_!?uk>HR=yaf>D=JnOX@t#5O%6K$;Qur}D(g7I>uWuk;IXyus zc;y3mJw+QrqKUJi+33ik`RXkBIamQCu9<{ zHUJC_L=?<2A}#O~Mt-GYLr6j#sz($x=%VMw1uqBGf+k)MC~A=N%6PPRRNx+g2N?-3 z-UN@HOeZ|#5wCU|XP5~d@%r&-gQXSUU@7KXCA493Bi}M9W{dedkLKfwHc`aJN->+p zUdIND8{01Be7i+#yU?kdVJNY2gCN0#mS{ptGNC1#&{9lj!%b)-OlTubXroMMsV211 zCbTpYTDl2sj0tV52`$5fHqL}L-h?*6gqCSSn`lCtWI~&4LYrbjn`%OvW6)LqdWHL!N)9OrbEF=VHR^bmh zkP3)MXlZ&h-b#uK`CDxSGsn}yCtZ)nTZxZZMx;Spfq#U35Rwqn^@zNc6jz8>=MW@v ziCe45F?vYeN>pwclO_oY93(IyC1H-yV+t!v_`7)s5}CwY4p}~t9;=5GRtjbraV$q9 z?~)P-Nr+RNr>b1h`deWrHa0n zB$1iOC;s^==mb3|Z=gQDHOnu)N39 z*kx3jVk(ThOllw|p=Ji6mipfIB-lBsw!WPhh^n&7s5FUH;46U&F$on97SKFOjGMfD zdg-2zZ%Kw+;?^d5lk}jxeX86tCQXtRI7(nbO2V9^$K>tP>*VjPB0G^OK~B~~^7iRt z_9N27XOcGYp~<)c?+R>)OW2e3*nC_m$)cBJ5j66MS99?cJv1Lz1g{^N<|Q=IS8%6Y z;6X;ho1(|#Fn=3tTGxctQ1Dxq}rUp(MSU+gaQfs27U4Q?LggY zz+|)bOa)n z@b>@`A~K0to14%B%uXqwjQ<>9jnw! z$k`52%=dcHP{7cpylXJ zhT=%%6Cu#gcVPH0totk8Uh-EPU8$c$=XHP%qH%zsOfzUiu;$rXusj``73IMv2&?vb zs-WSQ-UAVW%_8H+0>ZhaTfYBgY<}a1?!f7@&;;#MFdZ5+=wH~PTK&=OAJy7d`S`XBEpwWUPJ)D5XS zQV*mkq@GC8NWGAHBlSV*ixh(ti_{M(4yixV0Ho`Y1|khY8jM8G6%9p-M;eBdfRu=o zghc;uffW1>M;d`N5@{4tD$-~q%1_7d7^JaC8Ax}P|6h0^4lQ}{8pKiXLM|^8QA%+}&jU*JAG}lq p=Oab?xmx^WQb&ykpE@|!=fUwJDua{Pz_pcUz`tOB8Ug$8{|A>p;!OYm literal 0 HcmV?d00001 diff --git a/Web.Tests/DAL/UserImporterTests.cs b/Web.Tests/DAL/UserImporterTests.cs new file mode 100644 index 0000000..b17dad2 --- /dev/null +++ b/Web.Tests/DAL/UserImporterTests.cs @@ -0,0 +1,40 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using MileageTraker.Web.DAL; +using NUnit.Framework; + +namespace Web.Tests.DAL +{ + [TestFixture] + public class UserImporterTests + { + [Test] + public void Import_Gets_More_Than_One_Result() + { + var users = UserImporter.Import("DAL\\UserEmails.xls"); + + Assert.That(users.Count(), Is.GreaterThan(0)); + } + + [Test] + public void Import_Disabled_Users() + { + var users = UserImporter.Import("DAL\\UserEmails.xls"); + var jlawson = users.Find(u => u.Username == "jlawson"); + Assert.That(jlawson.IsApproved, Is.False); + } + + [Test] + public void Import_Gets_All_Fields() + { + var users = UserImporter.Import("DAL\\UserEmails.xls"); + var dsloan = users.Find(u => u.Username == "dsloan"); + Assert.That(dsloan.Username, Is.EqualTo("dsloan")); + Assert.That(dsloan.FullName, Is.EqualTo("David Sloan")); + Assert.That(dsloan.Email, Is.EqualTo("dsloan@ethra.org")); + Assert.That(dsloan.IsApproved, Is.True); + } + } +} diff --git a/Web.Tests/Web.Tests.csproj b/Web.Tests/Web.Tests.csproj index 5049e94..52c8dbc 100644 --- a/Web.Tests/Web.Tests.csproj +++ b/Web.Tests/Web.Tests.csproj @@ -83,6 +83,7 @@ + @@ -105,6 +106,9 @@ + + PreserveNewest + diff --git a/Web/App_Data/UserEmails.xls b/Web/App_Data/UserEmails.xls new file mode 100644 index 0000000000000000000000000000000000000000..50e2cc1228c6366acf7500f7259f9fc6c6fb7c84 GIT binary patch literal 44544 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 Import(string filename) + { + var fileInfo = new FileInfo(filename); + return Import(Workbook.Load(fileInfo.FullName)).ToList(); + } + + private static IEnumerable Import(Workbook workbook) + { + var sheet = workbook.Worksheets[0]; + var first = true; + for (var r = sheet.Cells.FirstRowIndex; r <= sheet.Cells.LastRowIndex; r++) + { + var row = sheet.Cells.GetRow(r); + + if (first) + { + first = false; + continue; + } + + var user = new User(); + user.FullName = row.GetCell(0).StringValue.Trim(); + user.Username = row.GetCell(1).StringValue.Trim(); + user.Email = row.GetCell(2).StringValue.Trim(); + user.IsApproved = string.IsNullOrEmpty(row.GetCell(3).StringValue); + + yield return user; + } + } + } +} \ No newline at end of file diff --git a/Web/Migrations/201301031939259_AddLogUser.cs b/Web/Migrations/201301031939259_AddLogUser.cs index 31bace2..41ea211 100644 --- a/Web/Migrations/201301031939259_AddLogUser.cs +++ b/Web/Migrations/201301031939259_AddLogUser.cs @@ -1,11 +1,88 @@ +using System; +using System.IO; +using System.Linq; +using System.Web; +using MileageTraker.Web.DAL; +using MileageTraker.Web.Models; + namespace MileageTraker.Web.Migrations { using System.Data.Entity.Migrations; public partial class AddLogUser : DbMigration { - public override void Up() + /// + /// 0 - UserId + /// 1 - Username + /// 2 - Email + /// 3 - FullName + /// 4 - IsApproved + /// + private const string InsertUserTemplate = @"INSERT INTO [User] + ([UserId] + ,[Username] + ,[Email] + ,[FullName] + ,[Password] + ,[Comment] + ,[IsApproved] + ,[PasswordFailuresSinceLastSuccess] + ,[LastPasswordFailureDate] + ,[LastActivityDate] + ,[LastLockoutDate] + ,[LastLoginDate] + ,[Created] + ,[IsLockedOut] + ,[LastPasswordChangedDate] + ,[PasswordResetToken]) + VALUES + ('{0}' + ,'{1}' + ,'{2}' + ,'{3}' + ,'' + ,NULL + ,{4} + ,0 + ,'1753-1-1' + ,'1753-1-1' + ,'1753-1-1' + ,'1753-1-1' + ,GETDATE() + ,0 + ,'1753-1-1' + ,NULL)"; + + private const string InsertUserRoleDriverTemplate = + @"INSERT INTO [RoleUser] + ([Role_RoleId] + ,[User_UserId]) + VALUES + ('C070ADF5-CCA3-42B0-92E4-9E38472940DF' + ,'{0}')"; + + private static string GetUserInsertSql(User user) + { + return string.Format(InsertUserTemplate, + user.UserId, + user.Username, + user.Email, + user.FullName, + user.IsApproved ? 1 : 0); + } + + private static string GetUserInsertRoleDriverSql(User user) { + return string.Format(InsertUserRoleDriverTemplate, + user.UserId); + } + + public override void Up() + { + AddColumn("Log", "User_UserId", c => c.Guid()); + AddForeignKey("Log", "User_UserId", "User", "UserId"); + CreateIndex("Log", "User_UserId"); + Sql(@"INSERT INTO [Role] ([RoleId] ,[RoleName] @@ -15,19 +92,35 @@ namespace MileageTraker.Web.Migrations ,'Driver' ,'Driver')"); - - AddColumn("Log", "User_UserId", c => c.Guid()); - AddForeignKey("Log", "User_UserId", "User", "UserId"); - CreateIndex("Log", "User_UserId"); - + //var folder = AppDomain.CurrentDomain.GetData("App_Data").ToString(); + var appDomain = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "App_Data"); + var users = UserImporter.Import(Path.Combine(appDomain, "UserEmails.xls")); + users = (from u in users + where u.Username != "dsloan" && + u.Username != "ccecil" + select u).ToList(); + foreach (var user in users) + { + user.UserId = Guid.NewGuid(); + Sql(GetUserInsertSql(user)); + Sql(GetUserInsertRoleDriverSql(user)); + } } - - public override void Down() + + public override void Down() { DropIndex("Log", new[] { "User_UserId" }); DropForeignKey("Log", "User_UserId", "User"); DropColumn("Log", "User_UserId"); + Sql(@"DELETE FROM [User] + WHERE UserId IN ( + SELECT RoleUser.User_UserId + FROM RoleUser + INNER JOIN Role On RoleUser.Role_RoleId = Role.RoleId + WHERE RoleName = 'Driver' + )"); + Sql(@"DELETE FROM ROLE WHERE RoleName = 'Driver'"); } } diff --git a/Web/Web.csproj b/Web/Web.csproj index 640f8c2..bdf8486 100644 --- a/Web/Web.csproj +++ b/Web/Web.csproj @@ -125,6 +125,7 @@ + @@ -230,6 +231,9 @@ + + PreserveNewest +