call to backend and setup angular
This commit is contained in:
parent
b560b768ae
commit
d1ea133d76
|
@ -1,25 +1,41 @@
|
||||||
<div class="caisse-main row">
|
<div class="caisse-main row"
|
||||||
<div class="listing-products col-9">
|
ng-app="caisse"
|
||||||
|
ng-controller="CaisseCtrl"
|
||||||
|
>
|
||||||
|
{% verbatim %}
|
||||||
|
<div class="alert">
|
||||||
|
test stuff: {{ stuff[0] }}.
|
||||||
|
<br>compte: {{ stuff.length }}.
|
||||||
|
</div>
|
||||||
|
<div class="well">
|
||||||
|
{{productsFromDB.length}}
|
||||||
|
</div>
|
||||||
|
{% endverbatim %}
|
||||||
|
<div class="listing-products col-xs-9">
|
||||||
{% for c in categories %}
|
{% for c in categories %}
|
||||||
<h2>
|
<h2>
|
||||||
|
|
||||||
{{ c.name }}
|
{{ c.name }}
|
||||||
</h2>
|
</h2>
|
||||||
{% for p in c.products %}
|
{% for p in c.products %}
|
||||||
<button class="btn btn-default">
|
<button class="btn btn-default"
|
||||||
|
ng-click="addProduct({{ p.id }})">
|
||||||
{{ p.name }}
|
{{ p.name }}
|
||||||
</button>
|
</button>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</div>
|
</div>
|
||||||
<div class="sellings col-3">
|
<div class="sellings col-xs-3">
|
||||||
<div class="current-selling">
|
<div class="current-selling">
|
||||||
<form action="">
|
<form action="">
|
||||||
<ul>
|
<ul>
|
||||||
<li>title x1 xxx€</li>
|
{% verbatim %}
|
||||||
</ul>
|
|
||||||
<h3>Total: xxx€</h3>
|
|
||||||
|
|
||||||
|
<li ng-repeat="p in activeSelling">
|
||||||
|
{{p.name}} x1 {{p.price}}€
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<h3>Total: {{CurrentSellingTotal}}€</h3>
|
||||||
|
{% endverbatim %}
|
||||||
<input type="number" id="paid_amount">
|
<input type="number" id="paid_amount">
|
||||||
<h3>Rendu: xxxx€</h3>
|
<h3>Rendu: xxxx€</h3>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
|
@ -55,9 +71,17 @@
|
||||||
<h4>
|
<h4>
|
||||||
Ventes récentes
|
Ventes récentes
|
||||||
</h4>
|
</h4>
|
||||||
|
{% if recentSells %}
|
||||||
<ul>
|
<ul>
|
||||||
<li>h:m:s xxxx€</li>
|
{% for s in recentSells %}
|
||||||
|
<li>{{ s.date|date('Y/m/d H:i:s') }} {{ s.amount }}€</li>
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
|
{% else %}
|
||||||
|
aucune
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,21 @@
|
||||||
|
{% extends 'base.html.twig' %}
|
||||||
|
|
||||||
|
{% block body %}
|
||||||
|
<h1>Sellrecord edit</h1>
|
||||||
|
|
||||||
|
{{ form_start(edit_form) }}
|
||||||
|
{{ form_widget(edit_form) }}
|
||||||
|
<input type="submit" value="Edit" />
|
||||||
|
{{ form_end(edit_form) }}
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<a href="{{ path('sellrecord_index') }}">Back to the list</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
{{ form_start(delete_form) }}
|
||||||
|
<input type="submit" value="Delete">
|
||||||
|
{{ form_end(delete_form) }}
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
{% endblock %}
|
|
@ -0,0 +1,37 @@
|
||||||
|
{% extends 'base.html.twig' %}
|
||||||
|
|
||||||
|
{% block body %}
|
||||||
|
<h1>Sellrecords list</h1>
|
||||||
|
|
||||||
|
<table>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>Date</th>
|
||||||
|
<th>Actions</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
{% for sellRecord in sellRecords %}
|
||||||
|
<tr>
|
||||||
|
<td><a href="{{ path('sellrecord_show', { 'date': sellRecord.date }) }}">{{ sellRecord.date }}</a></td>
|
||||||
|
<td>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<a href="{{ path('sellrecord_show', { 'date': sellRecord.date }) }}">show</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="{{ path('sellrecord_edit', { 'date': sellRecord.date }) }}">edit</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<a href="{{ path('sellrecord_new') }}">Create a new sellRecord</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
{% endblock %}
|
|
@ -0,0 +1,16 @@
|
||||||
|
{% extends 'base.html.twig' %}
|
||||||
|
|
||||||
|
{% block body %}
|
||||||
|
<h1>Sellrecord creation</h1>
|
||||||
|
|
||||||
|
{{ form_start(form) }}
|
||||||
|
{{ form_widget(form) }}
|
||||||
|
<input type="submit" value="Create" />
|
||||||
|
{{ form_end(form) }}
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<a href="{{ path('sellrecord_index') }}">Back to the list</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
{% endblock %}
|
|
@ -0,0 +1,28 @@
|
||||||
|
{% extends 'base.html.twig' %}
|
||||||
|
|
||||||
|
{% block body %}
|
||||||
|
<h1>Sellrecord</h1>
|
||||||
|
|
||||||
|
<table>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<th>Date</th>
|
||||||
|
<td>{% if sellRecord.date %}{{ sellRecord.date|date('Y-m-d H:i:s') }}{% endif %}</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<a href="{{ path('sellrecord_index') }}">Back to the list</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="{{ path('sellrecord_edit', { 'date': sellRecord.date }) }}">Edit</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
{{ form_start(delete_form) }}
|
||||||
|
<input type="submit" value="Delete">
|
||||||
|
{{ form_end(delete_form) }}
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
{% endblock %}
|
|
@ -1,3 +1,7 @@
|
||||||
|
app_sell_record:
|
||||||
|
resource: "@AppBundle/Controller/SellRecordController.php"
|
||||||
|
type: annotation
|
||||||
|
|
||||||
hwi_oauth_redirect:
|
hwi_oauth_redirect:
|
||||||
resource: "@HWIOAuthBundle/Resources/config/routing/redirect.xml"
|
resource: "@HWIOAuthBundle/Resources/config/routing/redirect.xml"
|
||||||
prefix: /connect
|
prefix: /connect
|
||||||
|
@ -26,3 +30,11 @@ app:
|
||||||
type: annotation
|
type: annotation
|
||||||
fos_user:
|
fos_user:
|
||||||
resource: "@FOSUserBundle/Resources/config/routing/all.xml"
|
resource: "@FOSUserBundle/Resources/config/routing/all.xml"
|
||||||
|
|
||||||
|
get_my_products:
|
||||||
|
path: /get-my-products
|
||||||
|
defaults: { _controller: AppBundle:Default:getMyProducts }
|
||||||
|
|
||||||
|
add_selling:
|
||||||
|
path: /add-selling
|
||||||
|
defaults: { _controller: AppBundle:Default:addSelling }
|
||||||
|
|
|
@ -1,2 +1,4 @@
|
||||||
require('../css/app.scss');
|
require('../css/app.scss');
|
||||||
|
require('../../node_modules/jquery/dist/jquery.min');
|
||||||
|
require('../../node_modules/angular/angular.min.js');
|
||||||
require('./parts/main.js');
|
require('./parts/main.js');
|
||||||
|
|
|
@ -1,2 +1,70 @@
|
||||||
console.log('hello console for main.js');
|
console.log('hello console for main.js');
|
||||||
|
var stuff = ['initialstuff'];
|
||||||
|
angular
|
||||||
|
.module('caisse', [])
|
||||||
|
.controller('CaisseCtrl', ['$scope', '$http', function ($scope, $http, stuff) {
|
||||||
|
$scope.productsFromDB = [
|
||||||
|
{id: 1, name: "truc 1", price: 8, category: 1},
|
||||||
|
{id: 2, name: "truc 2", price: 2, category: 1},
|
||||||
|
{id: 3, name: "truc 3", price: 4, category: 2},
|
||||||
|
{id: 4, name: "truc 4", price: 1, category: 2},
|
||||||
|
];
|
||||||
|
$scope.pausedSelling = [];
|
||||||
|
$scope.activeSelling = [];
|
||||||
|
$scope.CurrentSellingTotal = $scope.activeSelling.reduce(function (a, b) {
|
||||||
|
return a + b.price;
|
||||||
|
}, 0);
|
||||||
|
|
||||||
|
$scope.stuff = stuff;
|
||||||
|
$scope.setActiveSelling = function (selling) {
|
||||||
|
$scope.activeSelling = selling;
|
||||||
|
};
|
||||||
|
$scope.pauseSelling = function (selling) {
|
||||||
|
$scope.pausedSelling.push(selling);
|
||||||
|
};
|
||||||
|
$scope.addProduct = function (id) {
|
||||||
|
let found = $scope.productsFromDB.find({id: id});
|
||||||
|
if (found) {
|
||||||
|
$scope.productsToRecord.push(found);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
$scope.fetchProductsFromDB = function () {
|
||||||
|
console.log('fetch products...');
|
||||||
|
$http.get('get-my-products').then((data) => {
|
||||||
|
|
||||||
|
console.log('ok');
|
||||||
|
$scope.productsFromDB = data;
|
||||||
|
}, (err) => {
|
||||||
|
console.log(err);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
$scope.init = (function () {
|
||||||
|
$scope.fetchProductsFromDB();
|
||||||
|
})();
|
||||||
|
$scope.logtest = function () {
|
||||||
|
console.log('log test ok');
|
||||||
|
};
|
||||||
|
$scope.sendForm = function () {
|
||||||
|
let lesParams = {};
|
||||||
|
$http({
|
||||||
|
method: 'POST',
|
||||||
|
url : '/add-selling',
|
||||||
|
data : lesParams // pass in data as strings
|
||||||
|
}).then(function (rep) {
|
||||||
|
console.log(rep);
|
||||||
|
if (!rep.success) {
|
||||||
|
// if not successful, bind errors to error variables
|
||||||
|
$scope.errors = rep.errors;
|
||||||
|
} else {
|
||||||
|
// if successful, bind success message to message
|
||||||
|
$scope.successMessage = rep.data.message;
|
||||||
|
// changer le type de bout de phrase demandé
|
||||||
|
$scope.formData["tykayn_portfoliobundle_cadexqphrasepart[type]"]["$viewValue"] = 'nouveauType';
|
||||||
|
}
|
||||||
|
}, function (rep) {
|
||||||
|
console.log('nope! ', rep.data);
|
||||||
|
})
|
||||||
|
;
|
||||||
|
};
|
||||||
|
}]);
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,9 @@
|
||||||
"webpack-notifier": "^1.6.0"
|
"webpack-notifier": "^1.6.0"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"angular": "1.5",
|
||||||
"bootstrap": "^4.0.0",
|
"bootstrap": "^4.0.0",
|
||||||
"font-awesome": "^4.7.0"
|
"font-awesome": "^4.7.0",
|
||||||
|
"jquery": "1.19"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -39,19 +39,29 @@ class DefaultController extends Controller {
|
||||||
$m = $this->getDoctrine()->getManager();
|
$m = $this->getDoctrine()->getManager();
|
||||||
$currentUser = $this->getUser();
|
$currentUser = $this->getUser();
|
||||||
$categRepo = $m->getRepository( 'AppBundle:ProductCategory' );
|
$categRepo = $m->getRepository( 'AppBundle:ProductCategory' );
|
||||||
|
$sellingRepo = $m->getRepository( 'AppBundle:SellRecord' );
|
||||||
$categories = $categRepo->findAll();
|
$categories = $categRepo->findAll();
|
||||||
$csrfToken = $this->tokenManager
|
$recentSells = $sellingRepo->findBy( [], [ 'id' => 'desc' ], 0, 5 );
|
||||||
? $this->tokenManager->getToken( 'authenticate' )->getValue()
|
|
||||||
: null;
|
|
||||||
|
|
||||||
// replace this example code with whatever you need
|
// replace this example code with whatever you need
|
||||||
return $this->render( 'logged/dashboard.html.twig',
|
return $this->render( 'logged/dashboard.html.twig',
|
||||||
[
|
[
|
||||||
'categories' => $categories,
|
'categories' => $categories,
|
||||||
'currentUser' => $currentUser,
|
'currentUser' => $currentUser,
|
||||||
'csrf_token' => $csrfToken,
|
'recentSells' => $recentSells,
|
||||||
|
|
||||||
'base_dir' => realpath( $this->getParameter( 'kernel.project_dir' ) ) . DIRECTORY_SEPARATOR,
|
'base_dir' => realpath( $this->getParameter( 'kernel.project_dir' ) ) . DIRECTORY_SEPARATOR,
|
||||||
] );
|
] );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getMyProductsAction() {
|
||||||
|
return new JsonResponse( [
|
||||||
|
[ 'id' => 1, "name" => 'truc', "category" => 1, "price" => 9 ],
|
||||||
|
// [ 'id' => 2, name => 'truc2', category => 1, price => 4 ],
|
||||||
|
// [ id => 3, name => 'truc3', category => 2, price => 1 ],
|
||||||
|
] );
|
||||||
|
}
|
||||||
|
|
||||||
|
public function addSellingAction() {
|
||||||
|
return new JsonResponse( [ "message" => "ok" ] );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,136 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace AppBundle\Controller;
|
||||||
|
|
||||||
|
use AppBundle\Entity\SellRecord;
|
||||||
|
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
|
||||||
|
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
|
||||||
|
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;use Symfony\Component\HttpFoundation\Request;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sellrecord controller.
|
||||||
|
*
|
||||||
|
* @Route("sellrecord")
|
||||||
|
*/
|
||||||
|
class SellRecordController extends Controller
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Lists all sellRecord entities.
|
||||||
|
*
|
||||||
|
* @Route("/", name="sellrecord_index")
|
||||||
|
* @Method("GET")
|
||||||
|
*/
|
||||||
|
public function indexAction()
|
||||||
|
{
|
||||||
|
$em = $this->getDoctrine()->getManager();
|
||||||
|
|
||||||
|
$sellRecords = $em->getRepository('AppBundle:SellRecord')->findAll();
|
||||||
|
|
||||||
|
return $this->render('sellrecord/index.html.twig', array(
|
||||||
|
'sellRecords' => $sellRecords,
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a new sellRecord entity.
|
||||||
|
*
|
||||||
|
* @Route("/new", name="sellrecord_new")
|
||||||
|
* @Method({"GET", "POST"})
|
||||||
|
*/
|
||||||
|
public function newAction(Request $request)
|
||||||
|
{
|
||||||
|
$sellRecord = new Sellrecord();
|
||||||
|
$form = $this->createForm('AppBundle\Form\SellRecordType', $sellRecord);
|
||||||
|
$form->handleRequest($request);
|
||||||
|
|
||||||
|
if ($form->isSubmitted() && $form->isValid()) {
|
||||||
|
$em = $this->getDoctrine()->getManager();
|
||||||
|
$em->persist($sellRecord);
|
||||||
|
$em->flush();
|
||||||
|
|
||||||
|
return $this->redirectToRoute('sellrecord_show', array('date' => $sellRecord->getDate()));
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->render('sellrecord/new.html.twig', array(
|
||||||
|
'sellRecord' => $sellRecord,
|
||||||
|
'form' => $form->createView(),
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Finds and displays a sellRecord entity.
|
||||||
|
*
|
||||||
|
* @Route("/{date}", name="sellrecord_show")
|
||||||
|
* @Method("GET")
|
||||||
|
*/
|
||||||
|
public function showAction(SellRecord $sellRecord)
|
||||||
|
{
|
||||||
|
$deleteForm = $this->createDeleteForm($sellRecord);
|
||||||
|
|
||||||
|
return $this->render('sellrecord/show.html.twig', array(
|
||||||
|
'sellRecord' => $sellRecord,
|
||||||
|
'delete_form' => $deleteForm->createView(),
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Displays a form to edit an existing sellRecord entity.
|
||||||
|
*
|
||||||
|
* @Route("/{date}/edit", name="sellrecord_edit")
|
||||||
|
* @Method({"GET", "POST"})
|
||||||
|
*/
|
||||||
|
public function editAction(Request $request, SellRecord $sellRecord)
|
||||||
|
{
|
||||||
|
$deleteForm = $this->createDeleteForm($sellRecord);
|
||||||
|
$editForm = $this->createForm('AppBundle\Form\SellRecordType', $sellRecord);
|
||||||
|
$editForm->handleRequest($request);
|
||||||
|
|
||||||
|
if ($editForm->isSubmitted() && $editForm->isValid()) {
|
||||||
|
$this->getDoctrine()->getManager()->flush();
|
||||||
|
|
||||||
|
return $this->redirectToRoute('sellrecord_edit', array('date' => $sellRecord->getDate()));
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->render('sellrecord/edit.html.twig', array(
|
||||||
|
'sellRecord' => $sellRecord,
|
||||||
|
'edit_form' => $editForm->createView(),
|
||||||
|
'delete_form' => $deleteForm->createView(),
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Deletes a sellRecord entity.
|
||||||
|
*
|
||||||
|
* @Route("/{date}", name="sellrecord_delete")
|
||||||
|
* @Method("DELETE")
|
||||||
|
*/
|
||||||
|
public function deleteAction(Request $request, SellRecord $sellRecord)
|
||||||
|
{
|
||||||
|
$form = $this->createDeleteForm($sellRecord);
|
||||||
|
$form->handleRequest($request);
|
||||||
|
|
||||||
|
if ($form->isSubmitted() && $form->isValid()) {
|
||||||
|
$em = $this->getDoctrine()->getManager();
|
||||||
|
$em->remove($sellRecord);
|
||||||
|
$em->flush();
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->redirectToRoute('sellrecord_index');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a form to delete a sellRecord entity.
|
||||||
|
*
|
||||||
|
* @param SellRecord $sellRecord The sellRecord entity
|
||||||
|
*
|
||||||
|
* @return \Symfony\Component\Form\Form The form
|
||||||
|
*/
|
||||||
|
private function createDeleteForm(SellRecord $sellRecord)
|
||||||
|
{
|
||||||
|
return $this->createFormBuilder()
|
||||||
|
->setAction($this->generateUrl('sellrecord_delete', array('date' => $sellRecord->getDate())))
|
||||||
|
->setMethod('DELETE')
|
||||||
|
->getForm()
|
||||||
|
;
|
||||||
|
}
|
||||||
|
}
|
|
@ -5,7 +5,7 @@ namespace AppBundle\Entity;
|
||||||
use Doctrine\ORM\Mapping as ORM;
|
use Doctrine\ORM\Mapping as ORM;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @ORM\Entity(repositoryClass="App\Repository\ProductRepository")
|
* @ORM\Entity(repositoryClass="AppBundle\Repository\ProductRepository")
|
||||||
*/
|
*/
|
||||||
class Product {
|
class Product {
|
||||||
/**
|
/**
|
||||||
|
@ -88,4 +88,45 @@ class Product {
|
||||||
public function setCategory( ProductCategory $category ) {
|
public function setCategory( ProductCategory $category ) {
|
||||||
$this->category = $category;
|
$this->category = $category;
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* Constructor
|
||||||
|
*/
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
|
$this->sellRecords = new \Doctrine\Common\Collections\ArrayCollection();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add sellRecord
|
||||||
|
*
|
||||||
|
* @param \AppBundle\Entity\SellRecord $sellRecord
|
||||||
|
*
|
||||||
|
* @return Product
|
||||||
|
*/
|
||||||
|
public function addSellRecord(\AppBundle\Entity\SellRecord $sellRecord)
|
||||||
|
{
|
||||||
|
$this->sellRecords[] = $sellRecord;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove sellRecord
|
||||||
|
*
|
||||||
|
* @param \AppBundle\Entity\SellRecord $sellRecord
|
||||||
|
*/
|
||||||
|
public function removeSellRecord(\AppBundle\Entity\SellRecord $sellRecord)
|
||||||
|
{
|
||||||
|
$this->sellRecords->removeElement($sellRecord);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get sellRecords
|
||||||
|
*
|
||||||
|
* @return \Doctrine\Common\Collections\Collection
|
||||||
|
*/
|
||||||
|
public function getSellRecords()
|
||||||
|
{
|
||||||
|
return $this->sellRecords;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,7 @@ namespace AppBundle\Entity;
|
||||||
use Doctrine\ORM\Mapping as ORM;
|
use Doctrine\ORM\Mapping as ORM;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @ORM\Entity(repositoryClass="App\Repository\ProductCategoryRepository")
|
* @ORM\Entity(repositoryClass="AppBundle\Repository\ProductCategoryRepository")
|
||||||
*/
|
*/
|
||||||
class ProductCategory {
|
class ProductCategory {
|
||||||
/**
|
/**
|
||||||
|
@ -67,4 +67,32 @@ class ProductCategory {
|
||||||
$this->name = $name;
|
$this->name = $name;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructor
|
||||||
|
*/
|
||||||
|
public function __construct() {
|
||||||
|
$this->products = new \Doctrine\Common\Collections\ArrayCollection();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add product
|
||||||
|
*
|
||||||
|
* @param \AppBundle\Entity\Product $product
|
||||||
|
*
|
||||||
|
* @return ProductCategory
|
||||||
|
*/
|
||||||
|
public function addProduct( \AppBundle\Entity\Product $product ) {
|
||||||
|
$this->products[] = $product;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove product
|
||||||
|
*
|
||||||
|
* @param \AppBundle\Entity\Product $product
|
||||||
|
*/
|
||||||
|
public function removeProduct( \AppBundle\Entity\Product $product ) {
|
||||||
|
$this->products->removeElement( $product );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,14 +13,36 @@ class SellRecord {
|
||||||
*/
|
*/
|
||||||
private $products;
|
private $products;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @ORM\Id
|
* @ORM\Id
|
||||||
* @ORM\GeneratedValue
|
* @ORM\GeneratedValue
|
||||||
|
* @ORM\Column(name="id")
|
||||||
|
*/
|
||||||
|
private $id;
|
||||||
|
/**
|
||||||
* @ORM\Column(type="datetime")
|
* @ORM\Column(type="datetime")
|
||||||
*/
|
*/
|
||||||
private $date;
|
private $date;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ORM\Column(type="decimal", scale=2, nullable=true)
|
||||||
|
*/
|
||||||
|
private $amount;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return mixed
|
||||||
|
*/
|
||||||
|
public function getAmount() {
|
||||||
|
return $this->amount;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param mixed $amount
|
||||||
|
*/
|
||||||
|
public function setAmount( $amount ) {
|
||||||
|
$this->amount = $amount;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return mixed
|
* @return mixed
|
||||||
*/
|
*/
|
||||||
|
@ -57,9 +79,9 @@ class SellRecord {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param mixed $date
|
* @param \DateTime $date
|
||||||
*/
|
*/
|
||||||
public function setDate( $date ) {
|
public function setDate( \DateTime $date ) {
|
||||||
$this->date = $date;
|
$this->date = $date;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@ namespace AppBundle\Entity;
|
||||||
use Doctrine\ORM\Mapping as ORM;
|
use Doctrine\ORM\Mapping as ORM;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @ORM\Entity(repositoryClass="App\Repository\SellRecordRepository")
|
* @ORM\Entity(repositoryClass="AppBundle\Repository\SellRecordRepository")
|
||||||
*/
|
*/
|
||||||
class SellRecord {
|
class SellRecord {
|
||||||
/**
|
/**
|
||||||
|
@ -21,6 +21,8 @@ class SellRecord {
|
||||||
*/
|
*/
|
||||||
private $date;
|
private $date;
|
||||||
|
|
||||||
|
private $amount;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return mixed
|
* @return mixed
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -63,4 +63,3 @@ class Stuff
|
||||||
return $this->truc;
|
return $this->truc;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -36,4 +36,28 @@ class User extends BaseUser {
|
||||||
public function getId() {
|
public function getId() {
|
||||||
return $this->id;
|
return $this->id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set googleId
|
||||||
|
*
|
||||||
|
* @param string $googleId
|
||||||
|
*
|
||||||
|
* @return User
|
||||||
|
*/
|
||||||
|
public function setGoogleId($googleId)
|
||||||
|
{
|
||||||
|
$this->googleId = $googleId;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get googleId
|
||||||
|
*
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getGoogleId()
|
||||||
|
{
|
||||||
|
return $this->googleId;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,36 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace AppBundle\Form;
|
||||||
|
|
||||||
|
use Symfony\Component\Form\AbstractType;
|
||||||
|
use Symfony\Component\Form\FormBuilderInterface;
|
||||||
|
use Symfony\Component\OptionsResolver\OptionsResolver;
|
||||||
|
|
||||||
|
class SellRecordType extends AbstractType
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function buildForm(FormBuilderInterface $builder, array $options)
|
||||||
|
{
|
||||||
|
$builder->add('products');
|
||||||
|
}/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function configureOptions(OptionsResolver $resolver)
|
||||||
|
{
|
||||||
|
$resolver->setDefaults(array(
|
||||||
|
'data_class' => 'AppBundle\Entity\SellRecord'
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function getBlockPrefix()
|
||||||
|
{
|
||||||
|
return 'appbundle_sellrecord';
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,13 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace AppBundle\Repository;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* StuffRepository
|
||||||
|
*
|
||||||
|
* This class was generated by the Doctrine ORM. Add your own custom
|
||||||
|
* repository methods below.
|
||||||
|
*/
|
||||||
|
class StuffRepository extends \Doctrine\ORM\EntityRepository
|
||||||
|
{
|
||||||
|
}
|
|
@ -0,0 +1,55 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace AppBundle\Tests\Controller;
|
||||||
|
|
||||||
|
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
|
||||||
|
|
||||||
|
class SellRecordControllerTest extends WebTestCase
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
public function testCompleteScenario()
|
||||||
|
{
|
||||||
|
// Create a new client to browse the application
|
||||||
|
$client = static::createClient();
|
||||||
|
|
||||||
|
// Create a new entry in the database
|
||||||
|
$crawler = $client->request('GET', '/sellrecord/');
|
||||||
|
$this->assertEquals(200, $client->getResponse()->getStatusCode(), "Unexpected HTTP status code for GET /sellrecord/");
|
||||||
|
$crawler = $client->click($crawler->selectLink('Create a new entry')->link());
|
||||||
|
|
||||||
|
// Fill in the form and submit it
|
||||||
|
$form = $crawler->selectButton('Create')->form(array(
|
||||||
|
'appbundle_sellrecord[field_name]' => 'Test',
|
||||||
|
// ... other fields to fill
|
||||||
|
));
|
||||||
|
|
||||||
|
$client->submit($form);
|
||||||
|
$crawler = $client->followRedirect();
|
||||||
|
|
||||||
|
// Check data in the show view
|
||||||
|
$this->assertGreaterThan(0, $crawler->filter('td:contains("Test")')->count(), 'Missing element td:contains("Test")');
|
||||||
|
|
||||||
|
// Edit the entity
|
||||||
|
$crawler = $client->click($crawler->selectLink('Edit')->link());
|
||||||
|
|
||||||
|
$form = $crawler->selectButton('Update')->form(array(
|
||||||
|
'appbundle_sellrecord[field_name]' => 'Foo',
|
||||||
|
// ... other fields to fill
|
||||||
|
));
|
||||||
|
|
||||||
|
$client->submit($form);
|
||||||
|
$crawler = $client->followRedirect();
|
||||||
|
|
||||||
|
// Check the element contains an attribute with value equals "Foo"
|
||||||
|
$this->assertGreaterThan(0, $crawler->filter('[value="Foo"]')->count(), 'Missing element [value="Foo"]');
|
||||||
|
|
||||||
|
// Delete the entity
|
||||||
|
$client->submit($crawler->selectButton('Delete')->form());
|
||||||
|
$crawler = $client->followRedirect();
|
||||||
|
|
||||||
|
// Check the entity has been delete on the list
|
||||||
|
$this->assertNotRegExp('/Foo/', $client->getResponse()->getContent());
|
||||||
|
}
|
||||||
|
|
||||||
|
*/
|
||||||
|
}
|
|
@ -132,6 +132,10 @@ amdefine@>=0.0.4:
|
||||||
version "1.0.1"
|
version "1.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5"
|
resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5"
|
||||||
|
|
||||||
|
angular@1.5:
|
||||||
|
version "1.5.11"
|
||||||
|
resolved "https://registry.yarnpkg.com/angular/-/angular-1.5.11.tgz#8c5ba7386f15965c9acf3429f6881553aada30d6"
|
||||||
|
|
||||||
ansi-html@0.0.7:
|
ansi-html@0.0.7:
|
||||||
version "0.0.7"
|
version "0.0.7"
|
||||||
resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e"
|
resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e"
|
||||||
|
@ -2943,6 +2947,10 @@ isstream@~0.1.2:
|
||||||
version "0.1.2"
|
version "0.1.2"
|
||||||
resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
|
resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
|
||||||
|
|
||||||
|
jquery@1.19:
|
||||||
|
version "3.3.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.3.1.tgz#958ce29e81c9790f31be7792df5d4d95fc57fbca"
|
||||||
|
|
||||||
js-base64@^2.1.8, js-base64@^2.1.9:
|
js-base64@^2.1.8, js-base64@^2.1.9:
|
||||||
version "2.4.3"
|
version "2.4.3"
|
||||||
resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.4.3.tgz#2e545ec2b0f2957f41356510205214e98fad6582"
|
resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.4.3.tgz#2e545ec2b0f2957f41356510205214e98fad6582"
|
||||||
|
|
Loading…
Reference in New Issue