public List<OperationView> getOperation()
 {
     OperationDao Dao = new OperationDao();
     DataTable DaoResult = Dao.getOperation();
     return buildOperation(DaoResult);
 }
        /*Funcion: Insertar operacion de un equipo
          Param: OperationEquipmentInsertView, AuditDataFromWeb
          Return: status
          */
        public int getOperationID(OperationInsertView operation)
        {
            OperationDao Dao = new OperationDao();
            DataTable DaoResult = Dao.getOperationID(operation.ProcessId,operation.ProductLineId);
            int position = 0;

            foreach (DataRow row in DaoResult.Rows)
            {
                if (DaoResult.Columns.Contains("position") && row["position"] != DBNull.Value) { position = Convert.ToInt32(row["position"]); }

            }

            return position;
        }
        /*Funcion: Validar operacion
          Param: OperationValidateView
          Return: true / false
          */
        public OperationValidateView ValidateOperationProcessProduct(OperationInsertView view, List<String> EquipmentIDList)
        {
            OperationDao Dao = new OperationDao();

            view.OperationProcessId = getOperationProcessIdByLastProduct(view);

            OperationValidateView result = new OperationValidateView();

            result.state = true;

            for (int i = 0; i < EquipmentIDList.Count(); i++)
            {

                DataTable DaoResult = Dao.ValidateOperationProcessProduct(view, EquipmentIDList[i]);
                int cont = 0;

                foreach (DataRow row in DaoResult.Rows)
                {
                    if (DaoResult.Columns.Contains("cont") && row["cont"] != DBNull.Value) { cont = Convert.ToInt32(row["cont"]); }

                }

                System.Diagnostics.Debug.WriteLine("Cont: "+cont);

                if (cont >= 1)
                {
                    result.EquipmentId = EquipmentIDList[i];
                    result.state = false;
                    break;
                }

            }

            return result;
        }
 /*Funcion: Obtener los tipos de operaciones de una operacion
   Param: idOperation
   Return: Lista OperationEquipment
   */
 public List<OperationEquipmentView> getEquipmentByOperation(int idOperation)
 {
     OperationDao Dao = new OperationDao();
     DataTable recipeDaoResult = Dao.getEquipmentbyOperationManager(idOperation);
     return buildEquipmentOperation(recipeDaoResult);
 }
        /*Funcion: Valida el nombre de la operacion
          Param: OperationInsertView
          Return: status
          */
        public bool validateName(OperationInsertView operation)
        {
            OperationDao Dao = new OperationDao();
            DataTable DaoResult = Dao.validateName(operation);
            int cant = 0;

            foreach (DataRow row in DaoResult.Rows)
            {
                if (DaoResult.Columns.Contains("cant") && row["cant"] != DBNull.Value) { cant = Convert.ToInt32(row["cant"]); }

            }

            if (cant == 0)
            {
                return true;
            }
            else
            {
                return false;
            }
        }
 /*Funcion: Busca una operaciom con los datos de busqueda
   Param: datos de busqueda
   Return: status
   */
 public List<OperationView> searchOperation(string partial)
 {
     OperationDao Dao = new OperationDao();
     DataTable DaoResult = Dao.searchOperation(partial);
     return buildOperation(DaoResult);
 }
        /*Funcion: Insertar operacion de un equipo
          Param: OperationEquipmentInsertView, AuditDataFromWeb
          Return: status
          */
        public CUDView insertOperationEquipment(OperationEquipmentInsertView operation, AuditDataFromWeb audit)
        {
            OperationDao Dao = new OperationDao();
            String state = Dao.insertOperationEquipment(operation);
            CUDView logic = CUDVerifyLogic.verifierInsertDeleteUpdate("insert", state);

            if (logic.insert == true)
            {
                AuditService auditservice = new AuditService();
                String Action = "Insert new equipment for operation";
                String NewValues = "OperationId: " + operation.OperationId
                    + ", EquipmentId: " + operation.EquipmentId;

                auditservice.formInsert(Action, NewValues, audit);
            }
            return logic;
        }
        /*Funcion: Insertar una operaciom
          Param: OperationInsertView, AuditDataFromWeb
          Return: status
          */
        public CUDView insertOperation(OperationInsertView operation, AuditDataFromWeb audit)
        {
            OperationDao Dao = new OperationDao();

            operation.ID = getOperationID(operation);

            operation.OperationProcessId = getOperationProcessIdByLastProduct(operation);

            List<String> state = Dao.insertOperation(operation);

            CUDView logic = CUDVerifyLogic.verifierInsertPKReturnMSQL("insert", state);

            if (logic.insert == true)
            {
                AuditService auditservice = new AuditService();
                String Action = "Insert new operation";
                String NewValues = "OperationId: " + logic.insertPK
                     + ", ID: " + operation.ID
                    + ", OperationName: " + operation.OperationName
                    + ", OperationProcessId: " + operation.OperationProcessId
                    + ", OperationTypeId: " + operation.OperationTypeId
                    + ", ProcessId: " + operation.ProcessId
                    + ", ProductLineId: " + operation.ProductLineId;

                auditservice.formInsert(Action, NewValues, audit);
            }
            return logic;
        }
        /*Funcion: Obtener los tipos de operaciones de un proceso
          Param: idProcess
          Return: Lista OperationType
          */
        public List<OperationTypeView> getOperationTypeByProcess(int idProcess)
        {
            OperationDao Dao = new OperationDao();
            DataTable DaoResult = Dao.getOperationTypeByProcess(idProcess);
            List<OperationTypeView> ViewList = new List<OperationTypeView>();

            foreach (DataRow row in DaoResult.Rows)
            {
                OperationTypeView x = new OperationTypeView();
                if (DaoResult.Columns.Contains("OperationTypeId") && row["OperationTypeId"] != DBNull.Value) { x.OperationTypeId = Convert.ToInt32(row["OperationTypeId"]); }
                if (DaoResult.Columns.Contains("OperationTypeName") && row["OperationTypeName"] != DBNull.Value) { x.OperationTypeName = row["OperationTypeName"].ToString(); }

                ViewList.Add(x);
            }
            return ViewList;
        }