public Operation <WarehouseProcessView> WarehouseProcessEnd(int ProcessId)
        {
            Operation <WarehouseProcessView> operation = new Operation <WarehouseProcessView>();

            try
            {
                using (IDbConnection dbConnection = connection)
                {
                    dbConnection.Open();
                    IDbTransaction transaction  = dbConnection.BeginTransaction();
                    var            existingProc = dbConnection.Get <WarehouseProcessView>(ProcessId, transaction);
                    if (existingProc.StatusId != 15)
                    {
                        transaction.Commit();
                        dbConnection.Close();
                        return(operation);
                    }
                    WarehouseProcess warehouseProcess = dbConnection.Get <WarehouseProcess>(ProcessId, transaction);
                    warehouseProcess.StatusId       = 16;
                    warehouseProcess.ProcessEndDate = DateTime.Now;
                    dbConnection.Update(warehouseProcess, transaction);
                    transaction.Commit();
                    operation.Value = dbConnection.Get <WarehouseProcessView>(ProcessId);
                    dbConnection.Close();
                    operation.Successful = true;
                }
            }
            catch (Exception gex)
            {
                operation.Fail = gex.Message;
            }
            return(operation);
        }
        public Operation <WarehouseProcessView> PostWarehouseProcess(WarehouseProcessView warehouseProcess)
        {
            Operation <WarehouseProcessView> operation = new Operation <WarehouseProcessView>();

            try
            {
                using (IDbConnection dbConnection = connection)
                {
                    dbConnection.Open();
                    IDbTransaction transaction = dbConnection.BeginTransaction();
                    warehouseProcess.StatusId = 14;
                    WarehouseProcess warehouseProcessModel = warehouseProcess.GetEligibleOjbect <WarehouseProcess>();
                    warehouseProcessModel.Id = Convert.ToInt32(GetNewNumber(7, transaction));
                    warehouseProcess.Id      = warehouseProcessModel.Id;
                    dbConnection.Insert(warehouseProcessModel, transaction);
                    warehouseProcess.Fiches.ForEach(x => x.ProcessId = warehouseProcessModel.Id);
                    dbConnection.Insert(warehouseProcess.Fiches, transaction);
                    transaction.Commit();
                    dbConnection.Close();
                    operation.Value      = warehouseProcess;
                    operation.Successful = true;
                }
            }
            catch (Exception gex)
            {
                operation.Fail = gex.Message;
            }
            return(operation);
        }
        public Operation <WarehouseProcessView> WarehouseProcessBegin(int ProcessId)
        {
            Operation <WarehouseProcessView> operation = new Operation <WarehouseProcessView>();

            try
            {
                using (IDbConnection dbConnection = connection)
                {
                    dbConnection.Open();
                    IDbTransaction transaction  = dbConnection.BeginTransaction();
                    var            existingProc = dbConnection.Get <WarehouseProcessView>(ProcessId, transaction);
                    if (existingProc.StatusId != 14)
                    {
                        transaction.Commit();
                        dbConnection.Close();
                        return(operation);
                    }
                    var lst = dbConnection.Query <int>(@"select Distinct ServiceItemId 
from FicheLineService where FicheLineId IN (select Id 
from FicheLine where FicheId IN (select FicheId 
from WarehouseProcessFiche where ProcessId = @ProcessId ))", new { ProcessId }, transaction);
                    foreach (int itemId in lst)
                    {
                        dbConnection.Insert(new WarehouseProcessDetail {
                            ServiceItemId = itemId, ProcessId = ProcessId
                        }, transaction);
                    }
                    WarehouseProcess warehouseProcess = dbConnection.Get <WarehouseProcess>(ProcessId, transaction);
                    warehouseProcess.StatusId         = 15;
                    warehouseProcess.ProcessBeginDate = DateTime.Now;
                    dbConnection.Update(warehouseProcess, transaction);
                    transaction.Commit();
                    operation.Value = dbConnection.Get <WarehouseProcessView>(ProcessId);
                    dbConnection.Close();

                    operation.Successful = true;
                }
            }
            catch (Exception gex)
            {
                operation.Fail = gex.Message;
            }
            return(operation);
        }