X-Git-Url: http://git.ieval.ro/?a=blobdiff_plain;f=lib%2FApp%2FWeb%2FOof.pm;h=2814ad3760b879b85193982019d69e91cb2b79e1;hb=5eeddbd0b0c20375cf6d0258ed8cf3b9ef3b7a9b;hp=3310dd1e6bbdaa69792723dd503371b36dbe9ba4;hpb=8bbff1bcc40acc652541fcda101bda44de264921;p=app-web-oof.git diff --git a/lib/App/Web/Oof.pm b/lib/App/Web/Oof.pm index 3310dd1..2814ad3 100644 --- a/lib/App/Web/Oof.pm +++ b/lib/App/Web/Oof.pm @@ -193,6 +193,25 @@ sub order_app { } } +sub cancel { + my ($order) = @_; + $db{$$} //= DBIx::Simple->connect($ENV{OOF_DSN} // 'dbi:Pg:'); + $order = $db{$$}->select(orders => '*', {id => $order})->hash; + my $products = decode_json $order->{products}; + $db{$$}->begin_work; + try { + for my $prod (@$products) { + my $stock = $db{$$}->select(products => 'stock', {product => $prod->{product}})->list; + $db{$$}->update(products => {stock => $stock + $prod->{quantity}}, {product => $prod->{product}}); + } + $db{$$}->delete(orders => {id => $order->{id}}); + $db{$$}->commit; + } catch { + $db{$$}->rollback; + die $_ + } +} + sub details_list_element { my ($data, $li) = @_; $li->find('a')->attr(href => "/$data");