/// <summary> /// Adds the or update device. /// </summary> /// <param name="request">The request.</param> /// <returns></returns> public async Task <DeviceViewModel> AddOrUpdateDevice(AddOrUpdateDeviceRequest request) { var device = await _unitOfWork.GetRepository <Device>().FindAsync(x => x.Id == request.Id); var applications = await _unitOfWork.GetRepository <Application>().GetAll().Where(x => request.ApplicationIds.Contains(x.Id)).ToListAsync(); if (device == null) { var newDevice = _mapper.Map <Device>(request); foreach (var item in applications) { newDevice.Applications.Add(item); } _unitOfWork.GetRepository <Device>().Add(newDevice); device = newDevice; } else { var deviceConfigs = _unitOfWork.GetRepository <DeviceConfig>().GetAll().Where(x => x.DeviceId == device.Id); foreach (var item in deviceConfigs) { item.DeviceName = request.Name; item.AreaCode = request.AreaCode; _unitOfWork.GetRepository <DeviceConfig>().Update(item); } if (device.Applications.Count > 0) { foreach (var item in device.Applications.ToList()) { device.Applications.Remove(item); } } foreach (var item in applications) { device.Applications.Add(item); } device.Ip = request.Ip; device.Type = request.Type; device.AreaCode = request.AreaCode; device.IsActive = request.IsActive; device.Code = request.Code; device.Name = request.Name; device.UpdatedDate = DateTime.Now; _unitOfWork.GetRepository <Device>().Update(device); } await _unitOfWork.CommitAsync(); return(_mapper.Map <DeviceViewModel>(device)); }
public async Task <IActionResult> Add(AddOrUpdateDeviceRequest request) { var response = await _deviceService.AddOrUpdateDevice(request); return(Ok(new ApiOkResponse(response))); }