Linq: how to use system.linq.dynamic select expression? - c#-4.0

I want to build dynamic query with system.linq.dynamic
How I can change the following code to system.linq.dynamic?
var qResult =
(from m in lstKPProductSales
group m by new
{
m.ItemNo,
m.ItemName,
}
into d
select new
{
d.Key.ItemNo,
d.Key.ItemName,
SumStore2001 = d.Where(c => c.StoreNo == "2001").Sum(c => c.ActualCostAmount),
SumStore2002 = d.Where(c => c.StoreNo == "2002").Sum(c => c.ActualCostAmount),
SumStore2003 = d.Where(c => c.StoreNo == "2003").Sum(c => c.ActualCostAmount),
SumStore2004 = d.Where(c => c.StoreNo == "2004").Sum(c => c.ActualCostAmount),
SumStore2005 = d.Where(c => c.StoreNo == "2005").Sum(c => c.ActualCostAmount),
///...
}).ToList();
Thank you.

Related

Fields except Id and Tile are NULL

I'm facing a problem, all fields except ID, Title, Created, etc.. are Null, so all custom columns won't load any value.
I Tried to load the ListItems with Include, but result is still the same.
What am I doing wrong?
var participants = Spo.GetParticipants(true);
var oList = Ctx.Web.Lists.GetByTitle("Participant");
var camlQuery = new CamlQuery
{
ViewXml = "<ViewScope='RecursiveAll'><RowLimit>5000</RowLimit></View>"
};
var listItems = oList.GetItems(camlQuery);
//Ctx.Load(listItems,
// items => items.Include(
// item => item["ID"],
// item => item["Title"],
// item => item["Email"],
// item => item["FirstName"],
// item => item["Company"],
// item => item["Phone"],
// item => item["Street"],
// item => item["ZipCode"],
// item => item["City"]), items => items.ListItemCollectionPosition);
Ctx.Load(oList);
Ctx.Load(listItems);
Ctx.ExecuteQuery();
foreach (var oListItem in listItems)
{
foreach (var it in participants)
{
if (oListItem != null && oListItem["Email"].ToString() == it.Email)
{
oListItem["FirstName"] = it.FirstName;
oListItem["LastName"] = it.LastName;
oListItem["Company"] = it.Company;
oListItem["Phone"] = it.Phone;
oListItem["Street"] = it.Street;
oListItem["ZipCode"] = it.ZipCode;
oListItem["City"] = GetLookupCity(it.City);
//FieldLookupValue lv = new FieldLookupValue();
//lv.LookupId = int.Parse() it.City
p = "UPDATED: " + it.Email;
}
else
{
}
}
}
There should be something wrong with camlquery. There should be blank between View and Scope
<View Scope='RecursiveAll'><RowLimit>5000</RowLimit></View>

How can I flip an rotated svg element using javascript SVGMatrix

I have a svg element, let's say a group, that has applied matrix rotation to it. I want to use svgmatrix api to flip it regarding root / screen axis.
Solution found as #enxaneta suggested, is to wrap element in a pristine group and apply the flipping to it, offloading the work math to the engine / browser. This way any transformations will be preserved
export const mirror = ($el, k) => {
if (!$el) return
// flip horizontall or vertical
if (k !== 1 && k !== -1) return false
// create a group from element
const $g = newtag('g')
const $father = $el.parentElement || $el.ownerSVGElement
const $next = $el?.nextElementSibling
$next
? $father.insertBefore($g, $next)
: $father.appendChild($g)
$g.appendChild($el)
// get matrix of group
let xg = m($g)
let bb = $g.getBBox()
let x = bb.x+bb.width/2
let y = bb.y+bb.height/2
if (k === -1) {
xg = xg.flipY().translate(0, -2*y)
} else if (k === 1) {
xg = xg.flipX().translate(-2*x, 0)
}
// apply transformations to the group
setm($g, xg)
// preserve transformations applied to group wrapped element
// so when will be extracted from group it will have them
const xel = m2e($el, $father)
$father.insertBefore($el, $g)
setm($el, xel)
$g.remove()
}
const m = e => e.transform.baseVal.consolidate()?.matrix || e.ownerSVGElement?.createSVGMatrix() || e.createSVGMatrix()
const setm = (e, m) =>e.transform.baseVal.initialize(e.ownerSVGElement?.createSVGTransformFromMatrix(m))
const newtag = (n, v=null) => {
n = document.createElementNS(xmlns, n);
n.setAttributeNS(null, 'id', '_'+rnd())
if (!v) return n
attr(n, v)
return n
}
const attr = (n, v=null) => {
for (let p in v){
n.setAttributeNS(null, p.replace(/[A-Z]/g, (m, p, o, s) => "-" + m.toLowerCase()), v[p])
}
}
const m2e = (a,e) => {
if (!e) e = a.ownerSVGElement
return e.getScreenCTM().inverse().multiply(a.getScreenCTM())
}

how to use Tuple in MVC 5

I'm trying to use tuples so I can use 2 models in the same View and I did this in my controller:
public ActionResult Index( int id = 0 )
{
int lastVoyageID = entities.log_voyage.Max(item => item.Num_Voy);
var first = entities.log_voyage.Where(v => v.Num_Voy == lastVoyageID);
log_voyage voyage1 = entities.log_voyage.Find(lastVoyageID);
var second = entities.log_ligne_voyage.Where(x => x.NUM_Voy == lastVoyageID).ToList();
var t = new Tuple<log_voyage, log_ligne_voyage>(first, second);
return View(t);
}
but I got this:
I don't know what to do? How do I use tuples?
this is the error :
Can not convert system.Linq.IQueryable into WebApplication.Models.log_voyage
var first = entities.log_voyage.Where(v => v.Num_Voy == lastVoyageID) returns collection but Tuple expects for a single object so it should be;
var first = entities.log_voyage.Where(v => v.Num_Voy == lastVoyageID).FirstOrDefault()
And this expression returns collection and Tuple seeks for just one object again
var second = entities.log_ligne_voyage.Where(x => x.NUM_Voy == lastVoyageID).ToList()
You might want to change the Tuple signature as Tuple<log_voyage, List<log_ligne_voyage>>
Finally,
public ActionResult Index( int id = 0 )
{
int lastVoyageID = entities.log_voyage.Max(item => item.Num_Voy);
var first = entities.log_voyage.Where(v => v.Num_Voy == lastVoyageID).FirstOrDefault();
log_voyage voyage1 = entities.log_voyage.Find(lastVoyageID);
var second = entities.log_ligne_voyage.Where(x => x.NUM_Voy == lastVoyageID).ToList();
var t = new Tuple<log_voyage, List<log_ligne_voyage>>(first, second);
return View(t);
}

How to Programmatically place order in opencart

I am new to opencart. And now i am working on the order module.The concept is i have to place order externally. So as in the controller/checkout/confirm.php order placement i have placed the order. The order also successfully stored at the order table. But the problem is, the order is not shown at the admin page. I have searched lot for this issue, finally i found that the order is not placed properly.
My code is,
public function index() {
$redirect = '';
$this->load->model('account/address');
$address = $this->model_account_address->getAddress($this->customer->getAddressId());
if ((!$this->cart->hasProducts() && empty($this->session->data['vouchers'])) || (!$this->cart->hasStock() && !$this->config->get('config_stock_checkout'))) {
$redirect = $this->url->link('checkout/cart');
}
// Validate minimum quantity requirements.
$products = $this->cart->getProducts();
foreach ($products as $product) {
$product_total = 0;
foreach ($products as $product_2) {
if ($product_2['product_id'] == $product['product_id']) {
$product_total += $product_2['quantity'];
}
}
if ($product['minimum'] > $product_total) {
$redirect = $this->url->link('checkout/cart');
break;
}
}
if (!$redirect) {
$order_data = array();
$order_data['totals'] = array();
$total = 0;
$taxes = $this->cart->getTaxes();
$this->load->model('extension/extension');
$sort_order = array();
$results = $this->model_extension_extension->getExtensions('total');
foreach ($results as $key => $value) {
$sort_order[$key] = $this->config->get($value['code'] . '_sort_order');
}
array_multisort($sort_order, SORT_ASC, $results);
foreach ($results as $result) {
if ($this->config->get($result['code'] . '_status')) {
$this->load->model('total/' . $result['code']);
$this->{'model_total_' . $result['code']}->getTotal($order_data['totals'], $total, $taxes);
}
}
$sort_order = array();
foreach ($order_data['totals'] as $key => $value) {
$sort_order[$key] = $value['sort_order'];
}
array_multisort($sort_order, SORT_ASC, $order_data['totals']);
$this->load->language('checkout/checkout');
$order_data['invoice_prefix'] = $this->config->get('config_invoice_prefix');
$order_data['store_id'] = $this->config->get('config_store_id');
$order_data['store_name'] = $this->config->get('config_name');
if ($order_data['store_id']) {
$order_data['store_url'] = $this->config->get('config_url');
} else {
$order_data['store_url'] = HTTP_SERVER;
}
if ($this->customer->isLogged()) {
$this->load->model('account/customer');
$customer_info = $this->model_account_customer->getCustomer($this->customer->getId());
$order_data['customer_id'] = $this->customer->getId();
$order_data['customer_group_id'] = $customer_info['customer_group_id'];
$order_data['firstname'] = $customer_info['firstname'];
$order_data['lastname'] = $customer_info['lastname'];
$order_data['email'] = $customer_info['email'];
$order_data['telephone'] = $customer_info['telephone'];
$order_data['fax'] = $customer_info['fax'];
$order_data['custom_field'] = unserialize($customer_info['custom_field']);
} elseif (isset($this->session->data['guest'])) {
$order_data['customer_id'] = 0;
$order_data['customer_group_id'] = $this->session->data['guest']['customer_group_id'];
$order_data['firstname'] = $this->session->data['guest']['firstname'];
$order_data['lastname'] = $this->session->data['guest']['lastname'];
$order_data['email'] = $this->session->data['guest']['email'];
$order_data['telephone'] = $this->session->data['guest']['telephone'];
$order_data['fax'] = $this->session->data['guest']['fax'];
$order_data['custom_field'] = $this->session->data['guest']['custom_field'];
}
$order_data['payment_firstname'] = $address['firstname'];
$order_data['payment_lastname'] = $address['lastname'];
$order_data['payment_company'] = $address['company'];
$order_data['payment_address_1'] = $address['address_1'];
$order_data['payment_address_2'] = $address['address_2'];
$order_data['payment_city'] = $address['city'];
$order_data['payment_postcode'] = $address['postcode'];
$order_data['payment_zone'] = $address['zone'];
$order_data['payment_zone_id'] = $address['zone_id'];
$order_data['payment_country'] = $address['country'];
$order_data['payment_country_id'] = $address['country_id'];
$order_data['payment_address_format'] = $address['address_format'];
$order_data['payment_custom_field'] = $address['custom_field'];
if (isset($this->session->data['payment_method']['title'])) {
$order_data['payment_method'] = $this->session->data['payment_method']['title'];
} else {
$order_data['payment_method'] = '';
}
if (isset($this->session->data['payment_method']['code'])) {
$order_data['payment_code'] = $this->session->data['payment_method']['code'];
} else {
$order_data['payment_code'] = '';
}
if ($this->cart->hasShipping()) {
$order_data['shipping_firstname'] = $address['firstname'];
$order_data['shipping_lastname'] = $address['lastname'];
$order_data['shipping_company'] = $address['company'];
$order_data['shipping_address_1'] = $address['address_1'];
$order_data['shipping_address_2'] = $address['address_2'];
$order_data['shipping_city'] = $address['city'];
$order_data['shipping_postcode'] = $address['postcode'];
$order_data['shipping_zone'] = $address['zone'];
$order_data['shipping_zone_id'] = $address['zone_id'];
$order_data['shipping_country'] = $address['country'];
$order_data['shipping_country_id'] = $address['country_id'];
$order_data['shipping_address_format'] = $address['address_format'];
$order_data['shipping_custom_field'] = $address['custom_field'];
if (isset($this->session->data['shipping_method']['title'])) {
$order_data['shipping_method'] = $this->session->data['shipping_method']['title'];
} else {
$order_data['shipping_method'] = '';
}
if (isset($this->session->data['shipping_method']['code'])) {
$order_data['shipping_code'] = $this->session->data['shipping_method']['code'];
} else {
$order_data['shipping_code'] = '';
}
} else {
$order_data['shipping_firstname'] = '';
$order_data['shipping_lastname'] = '';
$order_data['shipping_company'] = '';
$order_data['shipping_address_1'] = '';
$order_data['shipping_address_2'] = '';
$order_data['shipping_city'] = '';
$order_data['shipping_postcode'] = '';
$order_data['shipping_zone'] = '';
$order_data['shipping_zone_id'] = '';
$order_data['shipping_country'] = '';
$order_data['shipping_country_id'] = '';
$order_data['shipping_address_format'] = '';
$order_data['shipping_custom_field'] = array();
$order_data['shipping_method'] = '';
$order_data['shipping_code'] = '';
}
$order_data['products'] = array();
foreach ($this->cart->getProducts() as $product) {
$option_data = array();
foreach ($product['option'] as $option) {
$option_data[] = array(
'product_option_id' => $option['product_option_id'],
'product_option_value_id' => $option['product_option_value_id'],
'option_id' => $option['option_id'],
'option_value_id' => $option['option_value_id'],
'name' => $option['name'],
'value' => $option['value'],
'type' => $option['type']
);
}
$order_data['products'][] = array(
'product_id' => $product['product_id'],
'name' => $product['name'],
'model' => $product['model'],
'option' => $option_data,
'download' => $product['download'],
'quantity' => $product['quantity'],
'subtract' => $product['subtract'],
'price' => $product['price'],
'total' => $product['total'],
'tax' => $this->tax->getTax($product['price'], $product['tax_class_id']),
'reward' => $product['reward']
);
}
// Gift Voucher
$order_data['vouchers'] = array();
if (!empty($this->session->data['vouchers'])) {
foreach ($this->session->data['vouchers'] as $voucher) {
$order_data['vouchers'][] = array(
'description' => $voucher['description'],
'code' => substr(md5(mt_rand()), 0, 10),
'to_name' => $voucher['to_name'],
'to_email' => $voucher['to_email'],
'from_name' => $voucher['from_name'],
'from_email' => $voucher['from_email'],
'voucher_theme_id' => $voucher['voucher_theme_id'],
'message' => $voucher['message'],
'amount' => $voucher['amount']
);
}
}
$order_data['comment'] = "";
$order_data['total'] = $total;
if (isset($this->request->cookie['tracking'])) {
$order_data['tracking'] = $this->request->cookie['tracking'];
$subtotal = $this->cart->getSubTotal();
// Affiliate
$this->load->model('affiliate/affiliate');
$affiliate_info = $this->model_affiliate_affiliate->getAffiliateByCode($this->request->cookie['tracking']);
if ($affiliate_info) {
$order_data['affiliate_id'] = $affiliate_info['affiliate_id'];
$order_data['commission'] = ($subtotal / 100) * $affiliate_info['commission'];
} else {
$order_data['affiliate_id'] = 0;
$order_data['commission'] = 0;
}
// Marketing
$this->load->model('checkout/marketing');
$marketing_info = $this->model_checkout_marketing->getMarketingByCode($this->request->cookie['tracking']);
if ($marketing_info) {
$order_data['marketing_id'] = $marketing_info['marketing_id'];
} else {
$order_data['marketing_id'] = 0;
}
} else {
$order_data['affiliate_id'] = 0;
$order_data['commission'] = 0;
$order_data['marketing_id'] = 0;
$order_data['tracking'] = '';
}
$order_data['language_id'] = $this->config->get('config_language_id');
$order_data['currency_id'] = $this->currency->getId();
$order_data['currency_code'] = $this->currency->getCode();
$order_data['currency_value'] = $this->currency->getValue($this->currency->getCode());
$order_data['ip'] = $this->request->server['REMOTE_ADDR'];
if (!empty($this->request->server['HTTP_X_FORWARDED_FOR'])) {
$order_data['forwarded_ip'] = $this->request->server['HTTP_X_FORWARDED_FOR'];
} elseif (!empty($this->request->server['HTTP_CLIENT_IP'])) {
$order_data['forwarded_ip'] = $this->request->server['HTTP_CLIENT_IP'];
} else {
$order_data['forwarded_ip'] = '';
}
if (isset($this->request->server['HTTP_USER_AGENT'])) {
$order_data['user_agent'] = $this->request->server['HTTP_USER_AGENT'];
} else {
$order_data['user_agent'] = '';
}
if (isset($this->request->server['HTTP_ACCEPT_LANGUAGE'])) {
$order_data['accept_language'] = $this->request->server['HTTP_ACCEPT_LANGUAGE'];
} else {
$order_data['accept_language'] = '';
}
$this->load->model('checkout/order');
$this->session->data['order_id'] = $this->model_checkout_order->addOrder($order_data);
$data['text_recurring_item'] = $this->language->get('text_recurring_item');
$data['text_payment_recurring'] = $this->language->get('text_payment_recurring');
$data['column_name'] = $this->language->get('column_name');
$data['column_model'] = $this->language->get('column_model');
$data['column_quantity'] = $this->language->get('column_quantity');
$data['column_price'] = $this->language->get('column_price');
$data['column_total'] = $this->language->get('column_total');
$this->load->model('tool/upload');
$data['products'] = array();
foreach ($this->cart->getProducts() as $product) {
$option_data = array();
foreach ($product['option'] as $option) {
if ($option['type'] != 'file') {
$value = $option['value'];
} else {
$upload_info = $this->model_tool_upload->getUploadByCode($option['value']);
if ($upload_info) {
$value = $upload_info['name'];
} else {
$value = '';
}
}
$option_data[] = array(
'name' => $option['name'],
'value' => (utf8_strlen($value) > 20 ? utf8_substr($value, 0, 20) . '..' : $value)
);
}
$recurring = '';
if ($product['recurring']) {
$frequencies = array(
'day' => $this->language->get('text_day'),
'week' => $this->language->get('text_week'),
'semi_month' => $this->language->get('text_semi_month'),
'month' => $this->language->get('text_month'),
'year' => $this->language->get('text_year'),
);
if ($product['recurring']['trial']) {
$recurring = sprintf($this->language->get('text_trial_description'), $this->currency->format($this->tax->calculate($product['recurring']['trial_price'] * $product['quantity'], $product['tax_class_id'], $this->config->get('config_tax'))), $product['recurring']['trial_cycle'], $frequencies[$product['recurring']['trial_frequency']], $product['recurring']['trial_duration']) . ' ';
}
if ($product['recurring']['duration']) {
$recurring .= sprintf($this->language->get('text_payment_description'), $this->currency->format($this->tax->calculate($product['recurring']['price'] * $product['quantity'], $product['tax_class_id'], $this->config->get('config_tax'))), $product['recurring']['cycle'], $frequencies[$product['recurring']['frequency']], $product['recurring']['duration']);
} else {
$recurring .= sprintf($this->language->get('text_payment_cancel'), $this->currency->format($this->tax->calculate($product['recurring']['price'] * $product['quantity'], $product['tax_class_id'], $this->config->get('config_tax'))), $product['recurring']['cycle'], $frequencies[$product['recurring']['frequency']], $product['recurring']['duration']);
}
}
$data['products'][] = array(
'key' => $product['key'],
'product_id' => $product['product_id'],
'name' => $product['name'],
'model' => $product['model'],
'option' => $option_data,
'recurring' => $recurring,
'quantity' => $product['quantity'],
'subtract' => $product['subtract'],
'price' => $this->currency->format($this->tax->calculate($product['price'], $product['tax_class_id'], $this->config->get('config_tax'))),
'total' => $this->currency->format($this->tax->calculate($product['price'], $product['tax_class_id'], $this->config->get('config_tax')) * $product['quantity']),
'href' => $this->url->link('product/product', 'product_id=' . $product['product_id']),
);
}
// Gift Voucher
$data['vouchers'] = array();
if (!empty($this->session->data['vouchers'])) {
foreach ($this->session->data['vouchers'] as $voucher) {
$data['vouchers'][] = array(
'description' => $voucher['description'],
'amount' => $this->currency->format($voucher['amount'])
);
}
}
$data['totals'] = array();
foreach ($order_data['totals'] as $total) {
$data['totals'][] = array(
'title' => $total['title'],
'text' => $this->currency->format($total['value']),
);
}
//$data['payment'] = $this->load->controller('payment/' . $this->session->data['payment_method']['code']);
} else {
$data['redirect'] = $redirect;
}
echo json_encode("success");
}
Is this correct format or still any process to do like updating order table or etc...
I really don't know what to do next.. Please someone guide me to get rid of this issue..
Thanks
Opencart admin display order which orders have order status is > 0. Did you check your order_status_id in database it will be 0.
That's the issue. How Opencart works, when you are at checkout - confirm page but you haven't confirm your order, Opencart already entered one entry for that order with order status id - 0.
After that when you confirm your order than your selected payment method - callback function (in mostly payment method(s)) update your order status using model > checkout > order function addOrderHistory().
So problem is that you added your order to Opencart but not updated it's order_status_id so after adding order add a function to your module with will update order status of last (or your added) order. For that you can check default payment methods.

Node save with multiple taxonomy field of different vocabulary in drupal 6

I'm trying to create a node with php with node_save. I have three field of taxonomy term of different vocabulary in content type so I'm not able create a node of content type with php.
This is my code.
global $user;
$tid = 3; //Different vocabulary
$tid1 = 66;//Different vocabulary
$tid2 = 940;//Different vocabulary
$term_id = 1265; //Different vocabulary
$node = new StdClass();
$node->title = 'Tips 4 Life';
$node->type = 'tips_for_life';
$node->body = 'test';
$node->field_tip_text['0']['value'] = $value['value'];
$node->status = 1;
$node->format = 1;
$node->moderate = 0;
$node->promote = 0;
$node->sticky = 0;
$node->revision = 0;
$node->name = $user->name;
$node->comment = 0;
$node->taxonomy = array($tid => $tid ,$term_id => $term_id,$tid1 => $tid1,$tid2 => $tid2);
$node = node_submit($node);
$done = node_save($node);
if($done)
{
drupal_set_message("done");
}
else {
drupal_set_message("Not done");
}
pls help me
$node->taxonomy is stored in the following way:
[taxonomy] => Array
(
[2] => stdClass Object
(
[tid] => 2
[vid] => 2
[name] => Descrip 1
[description] =>
[weight] => 0
)
[1] => stdClass Object
(
[tid] => 1
[vid] => 4
[name] => Descrip 2
[description] =>
[weight] => 0
)
)
Have you tried the following:
$node->taxonomy[] = array( etc etc etc )

Resources