private void PopulateOrderReportItem(IDataReader reader, OrderReportItem orderReportItem) { orderReportItem.OrderId = reader["orderId"].ToString(); orderReportItem.ClientName = reader["clientName"].ToString(); orderReportItem.ProductName = reader["productName"].ToString(); orderReportItem.OrderDate = DateTime.Parse(reader["orderDate"].ToString()); orderReportItem.Quantity = int.Parse(reader["quantity"].ToString()); orderReportItem.Total = double.Parse(reader["total"].ToString()); }
public bool CreateCsv(string clientId) { ClientRepository clientRepository = new ClientRepository(_context); Client client = clientRepository.FindById(clientId); string docPath = ConfigurationManager.AppSettings["CsvPath"]; docPath = string.Concat(docPath, client.Name.Trim(), ".csv"); StringBuilder sql = new StringBuilder(); sql.AppendLine("SELECT o.orderId"); sql.AppendLine(",c.name AS clientName"); sql.AppendLine(",p.name AS productName"); sql.AppendLine(",p.value AS productValue"); sql.AppendLine(",o.orderDate"); sql.AppendLine(",o.quantity"); sql.AppendLine(",(o.quantity * p.value) AS total"); sql.AppendLine("FROM orders o"); sql.AppendLine("LEFT JOIN products p"); sql.AppendLine("ON p.id=o.productId"); sql.AppendLine("LEFT JOIN clients c"); sql.AppendLine("ON c.id=o.clientId"); sql.AppendLine("WHERE o.clientId=@clientId"); MySqlCommand command = new MySqlCommand(sql.ToString(), _context); command.Parameters.Add("@clientId", MySqlDbType.VarChar).Value = clientId; List <OrderReportItem> reportItems = new List <OrderReportItem>(); using (IDataReader reader = command.ExecuteReader()) { while (reader.Read()) { OrderReportItem item = new OrderReportItem(); PopulateOrderReportItem(reader, item); reportItems.Add(item); } } StringBuilder csvBuilder = new StringBuilder(); csvBuilder.AppendLine("Código Pedido;Nome Cliente; NomeProduto; Data Pedido; Quantidade Pedido; Valor Produto; Valor Total"); foreach (OrderReportItem item in reportItems) { string formatedDate = item.OrderDate.ToString("dd/MM/yyyy"); string formatedProductValue = item.ProductValue.ToString("N3"); string formatedTotal = item.Total.ToString("N3"); csvBuilder.AppendFormat("{0};{1};{2};{3};{4};{5};{6}", item.OrderId, item.ClientName, item.ProductName, formatedDate, item.Quantity, formatedProductValue, formatedTotal).AppendLine(); } try { File.WriteAllText(docPath, csvBuilder.ToString()); } catch (InvalidCastException err) { return(false); } return(true); }