PageRenderTime 45ms CodeModel.GetById 19ms RepoModel.GetById 0ms app.codeStats 0ms

/WEB/_em/settings/_ctrl/step_moduli.ascx.cs

https://bitbucket.org/zzare/eko
C# | 339 lines | 175 code | 97 blank | 67 comment | 28 complexity | 8a3ed9d209c017b27db44124e938c42b MD5 | raw file
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic ;
  4. using System.Configuration;
  5. using System.Data;
  6. using System.Linq;
  7. using System.Web;
  8. using System.Web.Security;
  9. using System.Web.UI;
  10. using System.Web.UI.HtmlControls;
  11. using System.Web.UI.WebControls;
  12. using System.Web.UI.WebControls.WebParts;
  13. using System.Xml.Linq;
  14. using SM.EM.UI.Controls;
  15. public partial class _em_settings__ctrl_step_moduli : BaseWizardStep
  16. {
  17. protected bool IsPayedAndValid {
  18. get {
  19. return (ParentPageEmenik.em_user.PAYED && ParentPageEmenik.em_user.DATE_VALID >= DateTime.Now.Date);
  20. }
  21. }
  22. protected override void OnInit(EventArgs e)
  23. {
  24. base.OnInit(e);
  25. Description = "Elementi so različni tipi spletnih vsebin (besedilo, novica, galerija, kontaktni obrazec, anketa, zemljevid,...), ki gradijo spletno stran. " ;
  26. Description += "<br/><i>Namig: S klikom na ime ELEMENTA se ti odprejo dodatne informacije.</i>";
  27. ShortDesc = "Elementi (tip vsebine) na spletni strani";
  28. //Description = "<ul><li>";
  29. //Description += "Svoji spletni strani lahko poleg osnovnih funkcionalnosti dodeliš še nove. To storiš z nakupom dodatnih ELEMENTOV, ki razširijo uporabnost in privlačnost tvoje spletne strani. Zate smo jih pripravili kar nekaj, v prihodnosti pa jih mislimo dodati še več. ";
  30. //Description += "</li><li>";
  31. // Description += "NAKUP MODULA: Za nakup MODULA enostavno odkljukajte kljukico ob MODULU. Znesek se bo samodejno prištel k vaši letni ceni. Račun vam bomo poslali takoj, tako da boste kupljeni modul začeli uporabljati v najkrajšem možnem času (vklop MODULA se izvrši po prejetem plačilu). Po vsakem nakupu/spremembi, ne pozabite klikniti na gumb \"Shrani spremembe\", ki se nahaja čisto spodaj.";
  32. //Description += "NAKUP ELEMENTA: Za nakup ELEMENTA enostavno odkljukaj kljukico ob ELEMENTU. Znesek se bo samodejno prištel k tvoji letni ceni. ELEMENT lahko pričneš uporabljati TAKOJ. Če si dodal NOV ELEMENT, se ti bo ustrezno skrajšal čas veljavnosti spletne strani (če ste ga odkljukali, se bo ustrezno podaljšal čas veljavnosti). Po vsakem nakupu/spremembi, ne pozabi klikniti na gumb \"Shrani spremembe\", ki se nahaja čisto spodaj.";
  33. //Description += "</li><li>";
  34. //Description += "Namig: S klikom na ime ELEMENTA se ti odprejo dodatne informacije.";
  35. //Description += "</li></ul>";
  36. //ShortDesc = "Izberi elemente, ki jih potrebuješ";
  37. StepID = 3;
  38. }
  39. protected void Page_Load(object sender, EventArgs e)
  40. {
  41. }
  42. public override void LoadData()
  43. {
  44. // load data
  45. lvList.DataSource = MODULE.GetModulesEmenik();
  46. lvList.DataBind();
  47. // load database data
  48. txtStanjeSum.Text = SM.EM.Helpers.FormatPrice( ParentPageEmenik.em_user.CurrentCredit());
  49. txtValid.Text = "Tvoja stran je trenutno veljavna do: ";
  50. txtValidDate.Text = SM.EM.Helpers.FormatDate(ParentPageEmenik.em_user.DATE_VALID);
  51. LoadNewPageCredit();
  52. //txtSum.Text = SM.EM.Helpers.FormatPrice(ParentPageEmenik.em_user.GetDbModulesPriceSum());
  53. panChange.Visible = false;
  54. panExpired.Visible = false;
  55. // if user is new and hasn't payed, hide top panel
  56. if (!IsPayedAndValid)
  57. panCurrentState.Visible = false;
  58. else
  59. panCurrentState.Visible = true;
  60. // if page has expried, remind user
  61. if (ParentPageEmenik.em_user.DATE_VALID < DateTime.Now) {
  62. panExpired.Visible = true;
  63. txtExprired.Text = "Tvoja stran je potekla. Če želiš še naprej uporabljati svojo spletno stran, moraš poravnati račun za novo leto. V nasprotnem primeru bo tvoja stran umaknjena iz spleta.";
  64. }
  65. }
  66. // calculate new user options
  67. protected void LoadNewPageCredit() {
  68. panChange.Visible = IsPayedAndValid;
  69. decimal sum = 0;
  70. decimal sumTotal = 0;
  71. foreach (ListViewItem item in lvList.Items)
  72. {
  73. CheckBox cbModule = (CheckBox)item.FindControl("cbModule");
  74. if (cbModule == null) continue;
  75. HiddenField hfModID = (HiddenField)item.FindControl("hfModID");
  76. HiddenField hfModPrice = (HiddenField)item.FindControl("hfModPrice");
  77. HiddenField hfModBuyType = (HiddenField)item.FindControl("hfModBuyType");
  78. // get module id of the row
  79. int modID = Int32.Parse(hfModID.Value);
  80. decimal price = Convert.ToDecimal(hfModPrice.Value);
  81. int buyType = Int32.Parse(hfModBuyType.Value);
  82. if (cbModule.Checked)
  83. {
  84. switch (buyType)
  85. {
  86. case 1: // yearly price
  87. sum += price;
  88. break;
  89. case 2: // price for quantity
  90. sum += price * 1; // price x quantity
  91. break;
  92. default:
  93. break;
  94. }
  95. }
  96. }
  97. // new sum
  98. txtSum.Text = SM.EM.Helpers.FormatPrice(sum ) + " +DDV";
  99. sumTotal = sum;
  100. // calculate new date valid
  101. txtValidNew.Text = "Po shranitvi sprememb bo vaša stran veljavna do: ";
  102. txtValidDateNew.Text = SM.EM.Helpers.FormatDate(DateTime.Now.AddDays(EM_USER.GetNewDaysCredit(ParentPageEmenik.em_user.CurrentCredit(),sum)));
  103. // discount - disabled currnty
  104. //if (SM.BLL.Common.Emenik.Data.DiscountPercent() > 0 || ParentPageEmenik.em_user.DISCOUNT_PERCENT > 0)
  105. //{
  106. // divDiscount.Visible = true;
  107. // if (SM.BLL.Common.Emenik.Data.DiscountPercent() > 0)
  108. // litDiscountGlobal.Text = SM.BLL.Common.Emenik.Data.DiscountPercent().ToString() + "%";
  109. // else
  110. // litDiscountGlobal.Text = ParentPageEmenik.em_user.DISCOUNT_PERCENT.ToString() + "%";
  111. // if (SM.BLL.Common.Emenik.Data.DiscountPercent() > 0 && ParentPageEmenik.em_user.DISCOUNT_PERCENT > 0) {
  112. // phPersonal.Visible = true;
  113. // litDiscountPersonal.Text = ParentPageEmenik.em_user.DISCOUNT_PERCENT.ToString() + "%";
  114. // litDiscountTotal.Text = ParentPageEmenik.em_user.GetUserDiscount().ToString() + "%";
  115. // }
  116. // else
  117. // phPersonal.Visible = false ;
  118. // // new price
  119. // sumTotal = sum * ((decimal) (100-ParentPageEmenik.em_user.GetUserDiscount())/100) ;
  120. // txtSumDiscount.Text = SM.EM.Helpers.FormatPrice(sumTotal) + " +DDV";
  121. //}
  122. //else
  123. // divDiscount.Visible = false;
  124. // monthly
  125. litMonthly.Text = SM.EM.Helpers.FormatPrice((decimal)sumTotal / 12) + " +DDV";
  126. }
  127. public override bool SaveData(int step)
  128. {
  129. UpdateUserStep(step);
  130. eMenikDataContext db = new eMenikDataContext();
  131. decimal sum = 0;
  132. // save current credit before module update
  133. decimal currentCredit = ParentPageEmenik.em_user.CurrentCredit();
  134. // update user modules
  135. foreach (ListViewItem item in lvList.Items ){
  136. CheckBox cbModule = (CheckBox)item.FindControl("cbModule");
  137. if (cbModule == null) continue;
  138. HiddenField hfModID = (HiddenField)item.FindControl("hfModID");
  139. HiddenField hfModPrice = (HiddenField)item.FindControl("hfModPrice");
  140. // get module id of the row
  141. int modID = Int32.Parse( hfModID.Value );
  142. // get module data
  143. MODULE module = MODULE.GetModuleByID (modID);
  144. USER_MODULE mod = db.USER_MODULEs.SingleOrDefault(m => m.MOD_ID == modID && m.UserId == ParentPageEmenik.em_user.UserId);
  145. if (cbModule.Checked ) {
  146. // if module is new, insert it
  147. if (mod == null)
  148. {
  149. mod = new USER_MODULE();
  150. db.USER_MODULEs.InsertOnSubmit(mod);
  151. }
  152. // update
  153. mod.UserId = ParentPageEmenik.em_user.UserId;
  154. mod.MOD_ID = module.MOD_ID ;
  155. mod.EM_PRICE = module.EM_PRICE;
  156. if (mod.QUANTITY > 0)
  157. mod.QUANTITY += module.EM_BUY_QUANTITY;
  158. else
  159. mod.QUANTITY = module.EM_BUY_QUANTITY;
  160. db.SubmitChanges();
  161. // sum price
  162. switch (module.EM_BUY_TYPE)
  163. {
  164. case 1: // yearly price
  165. sum += module.EM_PRICE;
  166. break;
  167. case 2: // price for quantity
  168. sum += module.EM_PRICE * 1; // price x quantity
  169. break;
  170. default:
  171. break;
  172. }
  173. }
  174. else if (mod != null)
  175. {
  176. // delete user module
  177. db.USER_MODULEs.DeleteOnSubmit(mod);
  178. db.SubmitChanges();
  179. }
  180. }
  181. // modules are updated, calculate new validation date
  182. if (IsPayedAndValid )
  183. EM_USER.SetValidationDate(ParentPageEmenik.em_user.UserId, DateTime.Now.AddDays(EM_USER.GetNewDaysCredit(currentCredit, sum)));
  184. //this.Profile.Save();
  185. return true;
  186. }
  187. public override bool Validate()
  188. {
  189. return true;
  190. }
  191. protected void lvList_OnItemDataBound(object sender, ListViewItemEventArgs e) {
  192. if (e.Item.ItemType != ListViewItemType.DataItem) return;
  193. CheckBox cbModule = (CheckBox)e.Item.FindControl("cbModule");
  194. HiddenField hfModID = (HiddenField)e.Item.FindControl("hfModID");
  195. if (cbModule == null) return;
  196. int modID = Int32.Parse(hfModID.Value);
  197. USER_MODULE uMod = USER_MODULE.GetUserModuleByID(ParentPageEmenik.em_user.UserId, modID);
  198. MODULE mod = (MODULE)((ListViewDataItem)e.Item).DataItem;
  199. // preselect module if exists
  200. if (uMod != null)
  201. cbModule.Checked = true;
  202. // disable selection if is free module
  203. if (mod.EM_FREE)
  204. {
  205. cbModule.Enabled = false;
  206. cbModule.Checked = true;
  207. cbModule.Text = "";
  208. }
  209. }
  210. protected void cbModule_OnCheckChanged(object sender, EventArgs e) {
  211. LoadNewPageCredit();
  212. }
  213. protected void btCancel_OnClick(object sender, EventArgs e) {
  214. LoadData();
  215. }
  216. protected void placaj_OnClick(object sender, EventArgs e) {
  217. // int price = 0;
  218. // int.TryParse(tbPrice.Text, out price);
  219. // EM_USER.UpdateUserPayment(ParentPageEmenik.em_user.UserId, price, PAYMENT.Common.PaymentType.Payment, "", Page.User.Identity.Name, ParentPageEmenik.em_user.UserId);
  220. // LoadData();
  221. //}
  222. //protected void clear_OnClick(object sender, EventArgs e)
  223. //{
  224. // eMenikDataContext db = new eMenikDataContext();
  225. // EM_USER u = db.EM_USERs.Where(us => us.UserId == ParentPageEmenik.em_user.UserId).FirstOrDefault();
  226. // u.DATE_PAYED = null;
  227. // u.DATE_VALID = null;
  228. // u.DATE_ORDER_CHANGED = null;
  229. // u.PAYED = false;
  230. // db.SubmitChanges();
  231. // LoadData();
  232. }
  233. protected string GetPrice(object item) {
  234. MODULE mod = (MODULE)item;
  235. return SM.EM.Helpers.FormatPrice(mod.EM_PRICE);
  236. }
  237. protected override void Render(HtmlTextWriter writer)
  238. {
  239. Page.ClientScript.RegisterForEventValidation(lvList.UniqueID);
  240. base.Render(writer);
  241. }
  242. }