You are on page 1of 5

// ErsCsvCreateService ersCommons util public void WriteCsvBody<T>(T model, StreamWriter writer) where T : ErsModelBase { var dic = model.

GetPropertiesAsDictionary(typeof(CsvFieldAttribute)) ; var body = string.Empty; foreach (var key in dic.Keys) { body += ","; if (dic[key] != null) { var val = string.Empty; if (dic[key] is Array) { foreach (object o in (Array)dic[key]) { //val += "," + o.ToString(); // changed it to this: val += ",\"" + o.ToString() + "\""; } if (!string.IsNullOrEmpty(val)) val = val.Substring(1); // added this: body += val; } else { val = Convert.ToString(dic[key]); // and this: body += "\"" + val.Replace("\"", "\"\"") + "\""; } // took this out: // body += "\"'" + val.Replace("\"", "\"\"") + "\""; } } writer.WriteLine(body.Substring(1)); // ctsRepSalesTab.htm <form method="post" action="<%=.sec_url%>reports/sales"> <p class="btn"> <input type="hidden" name="datefrom" value="<%=.Model.datefrom%>" /> <input type="hidden" name="timefrom" value="<%=.Model.timefrom%>" /> <input type="hidden" name="dateto" value="<%=.Model.dateto%>" /> <input type="hidden" name="timeto" value="<%=.Model.timeto%>" /> <input type="hidden" name="TargetRegOrder" value="<%=.Model.TargetRe gOrder%>" /> <input type="submit" name="repsalescsv" value="OutputAsCSVFile" /> </p> </form> // ctsRepSales.cs

public void SaveCSV() { var criteria = this.repsalesCriteria(); criteria.AddGroupBy("byhalfhour"); criteria.AddGroupBy("scode"); criteria.AddOrderBy("scode", ErsCtsRepSalesCriteria.OrderBy.ORDER_BY _ASC); criteria.AddOrderBy("byhalfhour", ErsCtsRepSalesCriteria.OrderBy.ORD ER_BY_ASC); var criteriaTotalByInterval = this.repsalesCriteria(); criteriaTotalByInterval.AddGroupBy("byhalfhour"); criteriaTotalByInterval.AddOrderBy("byhalfhour", ErsCtsRepSalesCrite ria.OrderBy.ORDER_BY_ASC); var criteriaTotalByDNo = this.repsalesCriteria(); criteriaTotalByDNo.AddGroupBy("scode"); criteriaTotalByDNo.AddOrderBy("scode", ErsCtsRepSalesCriteria.OrderB y.ORDER_BY_ASC); var criteriaTime = ErsFactory.ersCtsRepSalesFactory.GetErsCtsRepSale sCriteria(); criteriaTime.AddOrderBy("byhalfhour", ErsCtsRepSalesCriteria.OrderBy .ORDER_BY_ASC); sales_download n = new sales_download(criteria, criteriaTotalByInter val, criteriaTotalByDNo, criteriaTime, TargetRegOrder); n.CreateCsvFile(); } public class sales_download : ErsCsvCreateService { private ErsCtsRepSalesCriteria criteria { get; set; } private ErsCtsRepSalesCriteria criteriaTotalByInterval { get; set; } private ErsCtsRepSalesCriteria criteriaTotalByDNo { get; set; } private ErsCtsRepSalesCriteria criteriaTime { get; set; } private bool TargetRegOrder { get; set; } public sales_download(ErsCtsRepSalesCriteria criteria, ErsCtsRepSale sCriteria criteriaTotalByInterval, ErsCtsRepSalesCriteria criteriaTotalByDNo, ErsCtsRepSalesCriter ia criteriaTime, bool TargetRegOrder) { this.criteria = criteria; this.criteriaTotalByInterval = criteriaTotalByInterval; this.criteriaTotalByDNo = criteriaTotalByDNo; this.criteriaTime = criteriaTime; this.TargetRegOrder = TargetRegOrder; } public override void CreateCsvFile(ErsPagerModelBase pager = null) { var rep = ErsFactory.ersCtsRepSalesFactory.getErsCtsRepSalesRepo sitory(); var listTimeInterval = rep.FindInterval(criteriaTime); IList<ErsCtsRepSales> listMain; IList<ErsCtsRepSales> listByInterval;

IList<ErsCtsRepSales> listByDNo; if (TargetRegOrder) { listMain = rep.Find(criteria); listByInterval = rep.FindTotalByInterval(criteriaTotalByInte rval); listByDNo = rep.FindTotalByDNo(criteriaTotalByDNo); } else { listMain = rep.FindTemp(criteria); listByInterval = rep.FindTempTotalByInterval(criteriaTotalBy Interval); listByDNo = rep.FindTempTotalByDNo(criteriaTotalByDNo); } var filename = DateTime.Now.ToString("yyyyMMddhhmmss") + ".csv"; ersContact.Models.reports.csv.sales_csv sales_csv; using (var writer = this.GetWriter(filename)) { this.WriteCsvHeader<ersContact.Models.reports.csv.sales_csv> (writer); string[] scode = new string[listByDNo.Count]; // Header for (int i = 0; i < listByDNo.Count; i++) scode[i] = listByDNo[i].scode; sales_csv = new ersContact.Models.reports.csv.sales_csv(); sales_csv.scode = scode; sales_csv.total = "Total"; this.WriteCsvBody(sales_csv, writer); // Middle foreach (var item in listTimeInterval) { sales_csv = new ersContact.Models.reports.csv.sales_csv( ); sales_csv.time_interval = item.byhalfhour; for (int i = 0; i < listByDNo.Count; i++) foreach (var main in listMain) if (main.scode == listByDNo[i].scode) if (main.byhalfhour == item.byhalfhour) scode[i] = main.amount.ToString(); sales_csv.scode = scode; foreach (var total in listByInterval) if (item.byhalfhour == total.byhalfhour) sales_csv.total = total.amount.ToString(); this.WriteCsvBody(sales_csv, writer); } //Footer

for (int i = 0; i < listByDNo.Count; i++) scode[i] = listByDNo[i].d_no_count.ToString(); sales_csv = new ersContact.Models.reports.csv.sales_csv(); sales_csv.time_interval = "Total"; sales_csv.scode = scode; this.WriteCsvBody(sales_csv, writer); } } } //reportController (sales) if (ctsRepSales.repsalescsv) ctsRepSales.SaveCSV(); //reportController (order) if (ctsRepOrder.repordercsv) ctsRepOrder.SaveCSV(); //CtsRepOrder.cs public void SaveCSV() { var criteria = ErsFactory.ersCtsRepOrderFactory.GetErsCtsRepOrderCri teria(); criteria = this.reporderCriteria(); order_download n = new order_download(criteria); n.CreateCsvFile(); } public class order_download : ErsCsvCreateService { private ErsCtsRepOrderCriteria criteria { get; set; } public order_download(ErsCtsRepOrderCriteria criteria) { this.criteria = criteria; } public override void CreateCsvFile(ErsPagerModelBase pager = null) { var rep = ErsFactory.ersCtsRepOrderFactory.getErsCtsRepOrderRepo sitory(); var total = rep.FindTotal(criteria); criteria.AddGroupBy("agent"); criteria.AddGroupBy("ag_type"); criteria.AddOrderBy("ag_type", ErsCtsRepOrderCriteria.OrderBy.OR DER_BY_ASC); var list = rep.Find(criteria); var filename = DateTime.Now.ToString("yyyyMMddhhmmss") + ".csv"; ersContact.Models.reports.csv.order_csv order_csv; using (var writer = this.GetWriter(filename)) { this.WriteCsvHeader<ersContact.Models.reports.csv.order_csv>

(writer); foreach (var item in list) { order_csv = new ersContact.Models.reports.csv.order_csv( ); order_csv.OrverwriteWithEntity(item); order_csv.agent = item.agent; order_csv.temp_order = 0; order_csv.reg_order = item.amount; order_csv.total = item.amount; order_csv.price = item.price; this.WriteCsvBody(order_csv, writer); } foreach (var item in total) { order_csv = new ersContact.Models.reports.csv.order_csv( ); order_csv.OrverwriteWithEntity(item); order_csv.agent = "Total"; order_csv.temp_order = 0; order_csv.reg_order = item.amount; order_csv.total = item.amount; order_csv.price = item.price; this.WriteCsvBody(order_csv, writer); } } } } // ctsRepOrderTab.htm <form method="post" action="<%=.sec_url%>reports/order"> <p class="btn"> <input type="hidden" name="datefrom" value="<%=.Model.datefrom%>" /> <input type="hidden" name="timefrom" value="<%=.Model.timefrom%>" /> <input type="hidden" name="dateto" value="<%=.Model.dateto%>" /> <input type="hidden" name="timeto" value="<%=.Model.timeto%>" /> <input type="hidden" name="ag_type" value="<%=.Model.ag_type%>" /> <input type="hidden" name="agentid" value="<%=.Model.agentid%>" /> <input type="submit" name="repordercsv" value="OutputAsCSVFile" /> </p> </form> // FieldNameResource.config <!--CSV Fields--> <!--Report Order--> <fieldname name="agent">agent</fieldname> <fieldname name="temp_order">temp_order</fieldname> <fieldname name="reg_order">reg_order</fieldname> <fieldname name="total">total</fieldname> <fieldname name="price">price</fieldname> <!--Report Sales--> <fieldname name="time_interval">time_interval</fieldname>

You might also like