public async Task <IActionResult> Put(int id, [FromBody] DemandesViewModel demandes)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    Demandes _demandes = Mapper.Map <Demandes>(demandes);
                    _unitOfWork.Demandes.Update(_demandes);
                    await _unitOfWork.SaveChangesAsync();

                    return(Ok("OK"));
                }
                catch (Exception ex)
                {
                    return(BadRequest(ex.Data));
                }
            }
            else
            {
                return(BadRequest(ModelState));
            }
        }
        public async Task <IActionResult> Post([FromBody] DemandesViewModel demandes)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    Demandes        _demandes = Mapper.Map <Demandes>(demandes);
                    Product         _product  = _unitOfWork.Products.GetAll().FirstOrDefault(e => e.Id == demandes.ProductId);
                    ApplicationUser user      = await _accountManager.GetUserByIdAsync(_demandes.userId);

                    _demandes.Product     = _product;
                    _demandes.CurrentStat = WorkflowEntryStat();
                    _demandes.DateDemande = DateTime.Now;
                    _demandes.Process     = _unitOfWork.Process.GetAll().FirstOrDefault(e => e.Name == GlobalVars.MAIN_PROCESS_NAME);
                    _unitOfWork.Demandes.Add(_demandes);
                    List <DemandesAction> demandeActions = new List <DemandesAction>();
                    Actions subMitterAction = new Actions();
                    var     transistion     = _unitOfWork.Transition.Find(e => e.EtatActuelId == _demandes.CurrentStatId);
                    foreach (var item in transistion)
                    {
                        var transitionAction = _unitOfWork.TransitionActions.GetAllIncluding(e => e.Actions, k => k.Transition).Where(e => e.TransitionId == item.Id);
                        foreach (var TA in transitionAction)
                        {
                            var submitterAction = _unitOfWork.ActionTarget.GetAll().FirstOrDefault(e => e.ActionsId == TA.ActionsId && e.Target == Target.Demandeur && TA.Transition.EtatActuel.TypeEtats == TypeEtats.Debut);

                            if (submitterAction != null)
                            {
                                subMitterAction = TA.Actions;
                                demandeActions.Add(new DemandesAction
                                {
                                    Demandes   = _demandes,
                                    Transition = item,
                                    Actions    = TA.Actions,
                                    IsActive   = false,
                                    IsComplete = true,
                                });
                            }
                            else
                            {
                                demandeActions.Add(new DemandesAction
                                {
                                    Demandes   = _demandes,
                                    Transition = item,
                                    Actions    = TA.Actions,
                                    IsActive   = true,
                                    IsComplete = false,
                                });
                            }
                        }
                    }
                    foreach (var item in demandeActions)
                    {
                        _unitOfWork.DemandesAction.Add(item);
                    }
                    _unitOfWork.ActionsHistories.Add(new ActionsHistories {
                        Demandes      = _demandes,
                        dateOperation = DateTime.Now,
                        User          = user,
                        Etat          = _demandes.CurrentStat,
                        Actions       = subMitterAction,
                        Comment       = "Demande soumis"
                    });
                    await _unitOfWork.SaveChangesAsync();

                    if (CanMoveTonextStat(_demandes.Id))
                    {
                        MoveState(_demandes.Id);
                    }
                    return(Ok("OK"));
                }
                catch (Exception ex)
                {
                    return(BadRequest(ex.Data));
                }
            }
            else
            {
                return(BadRequest(ModelState));
            }
        }