/// <summary>
        /// Adds the configuration.
        /// </summary>
        /// <param name="request">The request.</param>
        /// <returns></returns>
        /// <exception cref="Exception">
        /// </exception>
        public async Task <List <DeviceConfig> > AddConfig(AddDeviceConfigRequest request)
        {
            var device = await _unitOfWork.GetRepository <Device>().FindAsync(x => x.Id == request.DeviceId);

            if (device == null)
            {
                throw new Exception(ErrorMessages.NotFoundDevice);
            }

            var applicationIds = request.DeviceConfigs.Select(x => x.ApplicationId);
            var versionIds     = request.DeviceConfigs.Select(x => x.VersionId);

            var applications = _unitOfWork.GetRepository <Application>().GetAll().Where(x => applicationIds.Contains(x.Id));

            if (applications.Count() == 0)
            {
                throw new Exception(ErrorMessages.NotFoundApplication);
            }

            var versions = _unitOfWork.GetRepository <CS.EF.Models.Version>().GetAll().Where(x => versionIds.Contains(x.Id));

            if (versions.Count() == 0)
            {
                throw new Exception(ErrorMessages.NotFoundVersion);
            }

            var dictionApp = applications.ToDictionary(x => x.Id, x => x);
            var dictionVer = versions.ToDictionary(x => x.Id, x => x);

            var result = new List <DeviceConfig>();

            foreach (var item in request.DeviceConfigs)
            {
                var deviceConfig = new DeviceConfig
                {
                    ApplicationId   = item.ApplicationId,
                    DeviceId        = device.Id,
                    DeviceName      = device.Name,
                    VersionId       = item.VersionId,
                    ApplicationName = dictionApp.ContainsKey(item.ApplicationId) && dictionApp.Count > 0 ? dictionApp[item.ApplicationId].Name : "",
                    PackageName     = dictionApp.ContainsKey(item.ApplicationId) && dictionApp.Count > 0 ? dictionApp[item.ApplicationId].PackageName : "",
                    VersionCode     = dictionVer.ContainsKey(item.VersionId) && dictionVer.Count > 0 ? dictionVer[item.VersionId].Code : 0,
                    VersionName     = dictionVer.ContainsKey(item.VersionId) && dictionVer.Count > 0 ? dictionVer[item.VersionId].Name : "",
                    LogTime         = item.LogTime,
                    AreaCode        = device.AreaCode,
                    CreatedBy       = Systems.CreatedBy,
                    CreatedDate     = DateTime.Now,
                    UpdatedBy       = Systems.UpdatedBy,
                    UpdatedDate     = DateTime.Now
                };
                _unitOfWork.GetRepository <DeviceConfig>().Add(deviceConfig);
                result.Add(deviceConfig);
            }
            await _unitOfWork.CommitAsync();

            return(result);
        }
Ejemplo n.º 2
0
        public async Task <IActionResult> AddConfig(AddDeviceConfigRequest request)
        {
            var response = await _deviceConfigService.AddConfig(request);

            return(Ok(new ApiOkResponse(response)));
        }