public async Task <CassetteProperties> UpdateAsync(CassetteProperties request) { int id; if (int.TryParse(request.Num, out id)) { int[] realContainersId = new int[] { id }; var statuses = await _realContainerRepo.GetStatusesAsync(); int?realContainerStatusId = statuses.ToList().Find(s => s.Name == request.Status)?.IdType; if (realContainerStatusId.HasValue) { await _realContainerRepo.UpdateStatusAsync(realContainersId, realContainerStatusId.Value, false); } await _realContainerRepo.SetPropertiesAsync(realContainersId, request.AtRemove, request.AtCheck); var cas = await _realContainerRepo.GetAsync(realContainersId); return(_mapper.Map <RealContainer, CassetteProperties>(cas?.FirstOrDefault())); } return(null); }
public async Task <List <RealContainer> > FindRealContainersAsync(string qrCode, int creditOrgId, int?typeId, int?excludeTypeId, string method, string sortField, string sortType, int offset, int limit) { var qrCodeParts = RealContainer.TryParseCompositeQR(qrCode); var isCompositeQR = qrCodeParts?.Length > 1; var searchCode = isCompositeQR ? qrCodeParts[(int)RealContainerQrEnum.ContainerNum].ToString("X").PadLeft(6, '0') : qrCode; var specification = _specificationCreator.CreateSpecification(method, searchCode, creditOrgId, typeId, excludeTypeId); // Получаем контейнеры по QR коду в базе var container = await _realcontainerRepository.GetListAsync(specification, sortField, sortType, offset, limit); // Если QR код составной и по нему найден контейнер необходимо осуществить проверку корректности QR кода if (isCompositeQR && container.Count == 1) { // Если значения в QR коде расходятся с данными из базы, помечаем контейнер к проверке if (container[0].CheckQRcode(qrCodeParts).Count != 0) { container[0].NeedCheck = true; await _realcontainerRepository.SetPropertiesAsync(new int[] { container[0].RealContainerId }, bNeedCheck : true); } } return(container); }