/// <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); }
public async Task <IActionResult> AddConfig(AddDeviceConfigRequest request) { var response = await _deviceConfigService.AddConfig(request); return(Ok(new ApiOkResponse(response))); }