public async Task <ResponseViewModel <GatePassViewModel> > GetGatePassByRFID(string rfidCode)
        {
            ResponseViewModel <GatePassViewModel> response;
            GatePass          queryGatePassResult;
            GatePassViewModel gatePassViewModel;
            RFIDCard          queryRFIDResult;

            if (_unitOfWork.Exists() == false)
            {
                response = ResponseConstructor <GatePassViewModel> .ConstructData(ResponseCode.ERR_DB_CONNECTION_FAILED, null);
            }
            else
            {
                // Find RFID ID
                queryRFIDResult = await _rfidCardRepository.GetAsync(r => r.isDelete == false && r.code == rfidCode);

                if (queryRFIDResult == null)
                {
                    // Not found RFID tag on Database
                    response = ResponseConstructor <GatePassViewModel> .ConstructData(ResponseCode.ERR_SEC_NOT_FOUND_RFID, null);
                }
                else
                {
                    // Query Gatepass by RFID tag
                    queryGatePassResult = await _gatePassRepository.GetAsync(
                        g => g.isDelete == false &&
                        g.RFIDCardID == queryRFIDResult.ID, QueryIncludes.SECURITY_GATEPASS_INCLUDES);

                    if (queryGatePassResult == null)
                    {
                        // Not Found Gatepass matched with RFID No
                        response = ResponseConstructor <GatePassViewModel> .ConstructData(ResponseCode.ERR_SEC_NOT_FOUND_GATEPASS, null);
                    }
                    else
                    {
                        // Found the GatePass
                        gatePassViewModel = Mapper.Map <GatePass, GatePassViewModel>(queryGatePassResult);
                        response          = ResponseConstructor <GatePassViewModel> .ConstructData(ResponseCode.SUCCESS, gatePassViewModel);
                    }
                }
            }

            return(response);
        }
Example #2
0
        public async Task <ResponseViewModel <GenericResponseModel> > UpdateTheoryWeighValue(TheoryWeighValueModel theoryWeighValueModel)
        {
            ResponseViewModel <GenericResponseModel> response = new ResponseViewModel <GenericResponseModel>();

            try
            {
                if (await _authService.CheckUserPermission(theoryWeighValueModel.employeeID, theoryWeighValueModel.employeeRFID, "UpdateTheoryWeighValue"))
                {
                    var gatePass = await _gatePassRepository.GetAsync(gt => gt.ID == theoryWeighValueModel.gatePassID && gt.isDelete == false);

                    if (gatePass == null)
                    {
                        response = ResponseConstructor <GenericResponseModel> .ConstructBoolRes(ResponseCode.ERR_QUE_NO_GATEPASS_FOUND, false);
                    }
                    else
                    {
                        gatePass.theoryWeightValue = theoryWeighValueModel.theoryWeighValue;
                        _gatePassRepository.Update(gatePass);
                        if (await _unitOfWork.SaveChangesAsync())
                        {
                            response = ResponseConstructor <GenericResponseModel> .ConstructBoolRes(ResponseCode.SUCCESS, true);
                        }
                        else
                        {
                            response = ResponseConstructor <GenericResponseModel> .ConstructBoolRes(ResponseCode.ERR_SEC_UNKNOW, false);
                        }
                    }
                }
                else
                {
                    response = ResponseConstructor <GenericResponseModel> .ConstructBoolRes(ResponseCode.ERR_USER_PERMISSION, false);
                }
                return(response);
            }
            catch (Exception)
            {
                return(response = ResponseConstructor <GenericResponseModel> .ConstructBoolRes(ResponseCode.ERR_SEC_UNKNOW, false));
            }
        }
        public async Task <ResponseViewModel <QueueListViewModel> > CallNextTruck(int truckGroupID)
        {
            ResponseViewModel <QueueListViewModel> response = new ResponseViewModel <QueueListViewModel>();
            var queues = await _queueListRepository.GetManyAsync(qu => qu.gatePass.truckGroupID == truckGroupID && qu.isDelete == false, QueryIncludes.QUEUELISTFULLINCLUDES);

            var firstqueue = queues.OrderBy(q => q.queueNumber).First();
            var gatePass   = await _gatePassRepository.GetAsync(gt => gt.ID == firstqueue.gatePassID && gt.isDelete == false, QueryIncludes.GATEPASSFULLINCLUDES);

            if (gatePass == null)
            {
                response = ResponseConstructor <QueueListViewModel> .ConstructBoolRes(ResponseCode.ERR_QUE_NO_QUEUE_FOUND, false);
            }
            else
            {
                // Change GatePass state
                switch (gatePass.stateID)
                {
                case GatepassState.STATE_REGISTERED:
                    gatePass.stateID = GatepassState.STATE_CALLING_1;
                    break;

                case GatepassState.STATE_CALLING_1:
                    gatePass.stateID = GatepassState.STATE_CALLING_2;
                    break;

                case GatepassState.STATE_CALLING_2:
                    gatePass.stateID = GatepassState.STATE_CALLING_3;
                    break;

                case GatepassState.STATE_CALLING_3:
                    // Update state & Update queueList
                    gatePass.stateID = GatepassState.STATE_REGISTERED;
                    var currentQueue = await _queueListRepository.GetAsync(qu => qu.gatePassID == gatePass.ID && qu.isDelete == false);

                    var queueList = await _queueListRepository.GetManyAsync(qu => qu.queueNumber > currentQueue.queueNumber && qu.queueNumber <= (currentQueue.queueNumber + 5) && qu.gatePass.truckGroup.ID == gatePass.truckGroup.ID && qu.isDelete == false);

                    // If there are less than 5 - move to the last
                    if (queueList.Count() < 5)
                    {
                        // Set new Order
                        currentQueue.queueNumber += queueList.Count();
                        // Shift up 1 item for orther QueueItem
                        foreach (var queueItem in queueList)
                        {
                            queueItem.queueNumber -= 1;
                            _queueListRepository.Update(queueItem);
                        }
                    }
                    else      // If more than 5 - move down 5
                    {
                        // Set new order
                        currentQueue.queueNumber += 5;
                        // Shift up 1 item for orther QueueItem
                        foreach (var queueItem in queueList)
                        {
                            queueItem.queueNumber -= 1;
                            _queueListRepository.Update(queueItem);
                        }
                    }
                    break;

                default:
                    return(response = ResponseConstructor <QueueListViewModel> .ConstructBoolRes(ResponseCode.ERR_QUE_NO_QUEUE_FOUND, false));
                }
                _gatePassRepository.Update(gatePass);
                if (await _unitOfWork.SaveChangesAsync())
                {
                    response = ResponseConstructor <QueueListViewModel> .ConstructBoolRes(ResponseCode.SUCCESS, true);
                }
                else
                {
                    response = ResponseConstructor <QueueListViewModel> .ConstructBoolRes(ResponseCode.ERR_SEC_UNKNOW, false);
                }
            }
            return(response);
        }