Esempio n. 1
0
        public UpdateUnitTestTypeResponse UpdateUnitTestType(Guid accountId, UpdateUnitTestTypeRequestData data)
        {
            var request = GetRequest <UpdateUnitTestTypeRequest>(accountId);

            request.Data = data;
            var dispatcher = DispatcherHelper.GetDispatcherService();

            return(dispatcher.UpdateUnitTestType(request));
        }
        public IUnitTestTypeCacheReadObject UpdateUnitTestType(Guid accountId, UpdateUnitTestTypeRequestData data)
        {
            if (data == null)
            {
                throw new ArgumentNullException("data");
            }
            if (data.UnitTestTypeId == null)
            {
                throw new ParameterRequiredException("UnitTestTypeId");
            }

            var lockObject = LockObject.ForUnitTestType(data.UnitTestTypeId.Value);

            lock (lockObject)
            {
                var request = new AccountCacheRequest()
                {
                    AccountId = accountId,
                    ObjectId  = data.UnitTestTypeId.Value
                };

                var unitTestType = AllCaches.UnitTestTypes.Read(request);

                // Если поменялось системное имя, то проверим, что нет другого типа проверки с таким системным именем
                if (!string.Equals(unitTestType.SystemName, data.SystemName, StringComparison.OrdinalIgnoreCase))
                {
                    var anotherUnitTestType = AllCaches.UnitTestTypes.FindByName(accountId, data.SystemName);
                    if (anotherUnitTestType != null && anotherUnitTestType.Id != unitTestType.Id)
                    {
                        throw new ArgumentException("Тип проверки с таким системным именем уже существует");
                    }
                }

                using (var unitTestTypeWrite = AllCaches.UnitTestTypes.Write(request))
                {
                    unitTestTypeWrite.SystemName     = data.SystemName;
                    unitTestTypeWrite.DisplayName    = data.DisplayName;
                    unitTestTypeWrite.ActualTimeSecs = data.ActualTimeSecs;
                    unitTestTypeWrite.NoSignalColor  = data.NoSignalColor;
                    unitTestTypeWrite.BeginSave();
                    unitTestTypeWrite.WaitSaveChanges();
                }

                return(AllCaches.UnitTestTypes.Read(request));
            }
        }