Пример #1
0
        public async Task CreateOrUpdateChannelConfiguration(ChannelConfigurationItemViewModel item)
        {
            ChannelConfiguration entity;

            if (string.IsNullOrWhiteSpace(item.Id))
            {
                entity      = new ChannelConfiguration();
                entity.User = GetCurrentUser();
            }
            else
            {
                entity = await unitOfWork.GetAll <ChannelConfiguration>()
                         .Include(x => x.User)
                         .Include(x => x.HardwareFunction)
                         .SingleAsync(x => x.Id == item.Id);
            }

            entity.ChannelNumber   = item.ChannelNumber > 0 ? item.ChannelNumber : 1;
            entity.StartNucleotide = !string.IsNullOrWhiteSpace(item.StartNucleotide) ? item.StartNucleotide : "A";

            if (item.HardwareFunction != null && !string.IsNullOrWhiteSpace(item.HardwareFunction.Id))
            {
                entity.HardwareFunction = unitOfWork.GetById <HardwareFunction>(item.HardwareFunction.Id);
            }
            else
            {
                entity.HardwareFunction =
                    await unitOfWork.GetAll <HardwareFunction>().Where(x => x.FunctionType == HardwareFunctionType.ActivateChannel).FirstAsync();
            }

            unitOfWork.InsertOrUpdate(entity);
            unitOfWork.Commit();
        }
Пример #2
0
        private async Task AssignChannelNumbers(IEnumerable <GeneSynthesisActivity> geneSynthesisActivities)
        {
            var allChannels = await channelConfigurationService.GetChannelConfigurations();

            IList <ChannelConfigurationItemViewModel> availableChannels = allChannels.ToList();

            foreach (GeneSynthesisActivity geneSynthesisActivity in geneSynthesisActivities)
            {
                ChannelConfigurationItemViewModel channel = availableChannels.FirstOrDefault(
                    x => geneSynthesisActivity.DNASequence.StartsWith(x.StartNucleotide));

                geneSynthesisActivity.ChannelNumber = channel.ChannelNumber;

                HardwareFunction channelApiFunction = unitOfWork.GetById <HardwareFunction>(channel.HardwareFunction.Id);
                geneSynthesisActivity.ChannelApiFunctionId = channelApiFunction.Id;
                geneSynthesisActivity.ChannelApiFunction   = channelApiFunction;

                availableChannels.Remove(channel);
            }
        }
Пример #3
0
        private async Task AssertGeneFragmentsCorrespondsToConfiguredChannels(IEnumerable <GeneFragment> geneFragments)
        {
            var allChannels = await channelConfigurationService.GetChannelConfigurations();

            IList <ChannelConfigurationItemViewModel> availableChannels = allChannels.ToList();

            if (geneFragments.Count() > availableChannels.Count)
            {
                throw new Exception(AppResources.GeneSynthesizer_ChannelsConfigurationError);
            }

            foreach (GeneFragment geneFragment in geneFragments)
            {
                ChannelConfigurationItemViewModel channel = availableChannels.FirstOrDefault(x => geneFragment.OligoSequence.StartsWith(x.StartNucleotide));
                if (channel == null)
                {
                    throw new Exception(AppResources.GeneSynthesizer_ChannelsConfigurationError);
                }
                else
                {
                    availableChannels.Remove(channel);
                }
            }
        }