public LinkBroadcastStationsToResdbRes()
        {
            var linkBroadcastStationsToResdbResRepository = new LinkBroadcastStationsToResdbResRepository();

            Repository = linkBroadcastStationsToResdbResRepository;
        }
示例#2
0
        public bool InsertStations(List <RadioDevice> radioDeviceCollection)
        {
            var result = true;
            var radioDeviceListForInsert    = new List <RadioDevice>();
            var broadcastStationsRepository = Repository;

            if (broadcastStationsRepository != null && radioDeviceCollection != null)
            {
                foreach (var radioDevice in radioDeviceCollection)
                {
                    var broadcastStations = SingleRadioDeviceToBroadcastStations(radioDevice);
                    var isSuccess         = broadcastStationsRepository.InsertStation(broadcastStations);
                    var isIdResSet        = false;
                    if (isSuccess && radioDevice != null && broadcastStations != null)
                    {
                        radioDevice.IdRes = broadcastStations.ID_RES;
                        isIdResSet        = true;
                    }
                    var stationFrequencies = broadcastStations?.StationFrequencies;
                    if (radioDevice?.RadioSignals != null && isIdResSet && stationFrequencies != null)
                    {
                        var radioSignalsUpperBound = radioDevice.RadioSignals.GetUpperBound(0);
                        foreach (var stationFrequency in stationFrequencies)
                        {
                            if (stationFrequency != null)
                            {
                                for (int index = 0; index <= radioSignalsUpperBound; index++)
                                {
                                    if (radioDevice.RadioSignals[index] != null)
                                    {
                                        if ((radioDevice.RadioSignals[index].IdF == 0 ||
                                             radioDevice.RadioSignals[index].Res == 0) &&
                                            radioDevice.RadioSignals[index].Rn == stationFrequency.RN &&
                                            radioDevice.RadioSignals[index].Tn == stationFrequency.TN &&
                                            !radioDevice.RadioSignals.Any(
                                                // ReSharper disable SimplifyConditionalTernaryExpression
                                                x => x == null ? false : x.IdF == stationFrequency.ID_F
                                                // ReSharper restore SimplifyConditionalTernaryExpression
                                                )
                                            )
                                        {
                                            if (radioDevice.RadioSignals[index] != null)
                                            {
                                                radioDevice.RadioSignals[index].IdF = stationFrequency.ID_F;
                                                radioDevice.RadioSignals[index].Res = stationFrequency.RES;
                                                break;
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }

                    if (isIdResSet)
                    {
                        radioDeviceListForInsert.Add(radioDevice);
                    }
                    result = result && isIdResSet;
                }
            }

            var linkToResdbResList = new List <DataAccessLayer.LinkBroadcastStationsToResdbRes>();
            var linkToResdbFrqList = new List <DataAccessLayer.LinkStationFrequenciesToResdbFrq>();

            foreach (var deviceForInsert in radioDeviceListForInsert)
            {
                if (deviceForInsert?.Guid != null)
                {
                    if (deviceForInsert.RadioSignals != null)
                    {
                        foreach (var radioSignal in deviceForInsert.RadioSignals)
                        {
                            if (radioSignal?.Guid != null)
                            {
                                var linkBroadcastStationsToResdbFrq = new DataAccessLayer.LinkStationFrequenciesToResdbFrq
                                {
                                    GUID = radioSignal.Guid.Value,
                                    ID_F = radioSignal.IdF
                                };
                                linkToResdbFrqList.Add(linkBroadcastStationsToResdbFrq);
                            }
                        }
                    }
                    var linkBroadcastStationsToResdbRes = new DataAccessLayer.LinkBroadcastStationsToResdbRes
                    {
                        GUID   = deviceForInsert.Guid.Value,
                        ID_RES = deviceForInsert.IdRes
                    };
                    linkToResdbResList.Add(linkBroadcastStationsToResdbRes);
                }
            }

            if (linkToResdbResList.Count > 0)
            {
                var repository = new LinkBroadcastStationsToResdbResRepository();
                var isSuccess  = repository.InsertLinkToResdbRes(linkToResdbResList);
                result = result && isSuccess;
            }
            if (linkToResdbFrqList.Count > 0)
            {
                var repository = new LinkStationFrequenciesToResdbFrqRepository();
                var isSuccess  = repository.InsertLinkToResdbFrq(linkToResdbFrqList);
                result = result && isSuccess;
            }
            return(result);
        }