コード例 #1
0
        public AppEvent SendCommandToDeviceAPI(SendCommandToDeviceAPIModel model, QCDevice entity, ClaimsPrincipal principal)
        {
            string username = principal.FindFirstValue(AppClaimType.UserName);
            var    ev       = new AppEvent
            {
                Data        = null,
                Description = $"User {username} sent cmd {model.Command} to QC device with code {entity.Code} id: {entity.Id}",
                Type        = Data.Constants.AppEventType.SendCommandToDeviceAPI,
                UserId      = principal.Identity.Name
            };

            PrepareCreate(ev);
            return(context.AppEvent.Add(ev).Entity);
        }
コード例 #2
0
        public async Task <IActionResult> SendCommandToDeviceAPI(SendCommandToDeviceAPIModel model)
        {
            var entity = _service.QCDevices.Id(model.DeviceId).FirstOrDefault();

            if (entity == null)
            {
                return(NotFound(AppResult.NotFound()));
            }
            var validationData = _service.ValidateSendCommandToDeviceAPI(User, model);

            if (!validationData.IsValid)
            {
                return(BadRequest(AppResult.FailValidation(data: validationData)));
            }
            object respData = null;

            switch (model.Command)
            {
            case Business.Constants.QCEventOps.GET_EVENTS:
                var(succ, fail, latest) = await _service.SendCommandGetEvents(model, entity, entity.Config);

                respData = new
                {
                    success = succ,
                    fail    = fail
                };
                context.SaveChanges();
                if (latest != null)
                {
                    await _service.SendCommandUpdateLastEventTime(new UpdateLastEventTimeModel
                    {
                        UtcTime = latest.Value
                    }, entity, entity.Config);
                }
                break;

            case Business.Constants.QCEventOps.DOWNLOAD_IMAGES:
                var(stream, fileName) = await _service.SendCommandDownloadImages(
                    model, entity, entity.Config);

                return(File(stream, MediaTypeNames.Application.Zip, fileName));

            case Business.Constants.QCEventOps.CLEAR_ALL:
                var deleted = await _service.SendCommandClearAllEvents(
                    model, entity, entity.Config);

                respData = deleted;
                break;

            case Business.Constants.QCEventOps.TRIGGER_SEND:
                var dateTimeOffset = await _service.SendCommandTriggerSendUnsent(
                    model, entity, entity.Config);

                respData = dateTimeOffset;
                break;
            }
            // must be in transaction
            var ev = _ev_service.SendCommandToDeviceAPI(model, entity, User);

            context.SaveChanges();
            return(Ok(AppResult.Success(respData)));
        }