Exemple #1
0
        /// <summary>
        /// 更改区域启用状态
        /// </summary>
        /// <param name="LocationID"></param>
        /// <param name="status"></param>
        /// <returns></returns>
        public ReturnInfo ChangeEnable(String LocationID, LocationStatus status)
        {
            ReturnInfo RInfo = new ReturnInfo();

            try
            {
                if (String.IsNullOrEmpty(LocationID))
                {
                    throw new Exception("区域编号不能为空");
                }
                AssLocation al = _AssLocationRepository.GetByID(LocationID).FirstOrDefault();
                if (al == null)
                {
                    throw new Exception("区域编号不存在,请检查!");
                }

                al.ISENABLE = (int)status;
                _unitOfWork.RegisterDirty(al);
                bool result = _unitOfWork.Commit();
                RInfo.IsSuccess = true;
                return(RInfo);
            }
            catch (Exception ex)
            {
                _unitOfWork.Rollback();
                RInfo.IsSuccess = false;
                RInfo.ErrorInfo = ex.Message;
                return(RInfo);
            }
        }
Exemple #2
0
    public Location GetCurrentLocation()
    {
        Random  rnd     = new Random();
        decimal newLat  = _location.Latitude + rnd.Next(-1, 2);
        decimal newLong = _location.Longitude + rnd.Next(-1, 2);

        // Assume arrival if the difference in latitude is 3.
        _lastLocation = _location;
        LocationStatus status = Math.Abs(_startLocation.Latitude - newLat) >= 3 ?
                                LocationStatus.Finished : LocationStatus.EnRoute;

        _location = new Location(_location.Latitude + rnd.Next(-1, 2),
                                 _location.Longitude + rnd.Next(-1, 2),
                                 DateTime.UtcNow, status);
        if (!_location.Equals(_lastLocation))
        {
            // Notify observers.
            foreach (IObserver <Location> observer in observers)
            {
                observer.OnNext(this.Location);
                // Assume that we've arrived at location of Latitude has changed by 4.
                if (_location.Status == LocationStatus.Finished)
                {
                    observer.OnCompleted();
                }
            }
        }
        return(this.Location);
    }
Exemple #3
0
 public Location(decimal lat, decimal lon, DateTime dateAndTime, LocationStatus status)
 {
     this.Latitude    = lat;
     this.Longitude   = lon;
     this.DateAndTime = dateAndTime;
     this.Status      = status;
 }
Exemple #4
0
        private async Task GetLocationStatusAsync()
        {
            if (_evoHomeSettings.DisableMqtt)
            {
                return;
            }

            try
            {
                var token = await _manager.GetToken(_evoHomeSettings.EvoUsername, _evoHomeSettings.EvoPassword);

                Client.AuthHeader = $"{token.TokenType} {token.AccessToken}";
                _logger.LogInformation($"Retrieving Location Status For {_location.LocationInfo.Name}");
                _status = await Client.GetLocationStatusAsync(_location.LocationInfo.LocationId, true);

                _logger.LogInformation($"Retrieved Location Status For {_location.LocationInfo.Name}");

                foreach (var zone in _status.Gateways.SelectMany(x => x.TemperatureControlSystems)
                         .SelectMany(x => x.Zones))
                {
                    _logger.LogInformation($"Publishing updated status for zone {zone.Name}");
                    await Publish(zone.ZoneId, ZoneToStatus(zone));
                }
            }
            catch (Exception e)
            {
                _logger.LogError("Failed to retrieve status updates", e);
            }
        }
 public NativeFilter()
 {
     Name        = "Native to";
     Status      = LocationStatus.Native;
     InputType   = InputType.Select;
     FilterType  = FilterType.String;
     FacetValues = new Dictionary <string, long?>();
 }
Exemple #6
0
 private LocationSimulator(decimal latitude, decimal longitude, LocationStatus status)
 {
     _location     = new Location(latitude, longitude, DateTime.UtcNow, status);
     _lastLocation = _location;
     if (status == LocationStatus.Started)
     {
         _startLocation = _location;
     }
 }
Exemple #7
0
        private async Task SplitterPortDefaults()
        {
            using (var odw = new OracleDatabaseWorker(tbOracleConnectionStringText))
            {
                List <string> splitterportstatuses = await Task.FromResult(odw.GetDistinctDataColumn(splitterPortsTable, "STATUS"));

                //splitter eqtype
                using (var puow = new UnitOfWork(Tsdl))
                {
                    using (var uow = new UnitOfWork(Tsdl))
                    {
                        var gss = GlobalSystemSettings.GetInstanceFromDatabase(uow);
                        //////////
                        if (gss.SplitterPortType == null)
                        {
                            gss.SplitterPortType =
                                new PortType(uow)
                            {
                                TypeName = "SPLITTERPORT"
                            };
                            uow.CommitChanges();
                        }
                        splitterEquipmentTypeOid = gss
                                                   .SplitterPortType.Oid;
                    }

                    //status
                    var del = new MyDelegate((lst) =>
                    {
                        using (var uow = new UnitOfWork(Tsdl))
                        {
                            foreach (var str in lst
                                     .Where(s => s != "" && !uow.Query <LocationStatus>().Select(x => x.StatusName)
                                            .Contains(s))
                                     )
                            {
                                if (!uow.Query <LocationStatus>().Any(x => x.StatusName == str))
                                {
                                    LocationStatus cs = new LocationStatus(uow)
                                    {
                                        StatusName = str
                                    };
                                    uow.CommitChanges();
                                }
                            }
                            return(true);
                        }
                    });
                    IAsyncResult statusres = del.BeginInvoke(splitterportstatuses, null, null);
                }
            }//using ORACLE odw
        }
Exemple #8
0
        public LocationInfo(
            int id,
            string name,
            LocationStatus status = LocationStatus.Healthy)
        {
            Ensure.IsValidId(id);
            Ensure.NotNullOrEmpty(name, nameof(name));

            Id         = id;
            ProviderId = LocationId.Create(id).ProviderId;
            Name       = name;
            Status     = status;
        }
 /// <summary>
 /// Resets the API.
 /// </summary>
 public void Reset()
 {
     //Reset services.
     try { Events = new Events.EventHandler(); } catch (Exception ex) { Logger.Log(Severity.Warning, "Couldn't instantiate service 'Events'.", ex); }
     try { Commander = new CommanderStatus(this); } catch (Exception ex) { Logger.Log(Severity.Warning, "Couldn't instantiate service 'Commander'.", ex); }
     try { Location = new LocationStatus(this); } catch (Exception ex) { Logger.Log(Severity.Warning, "Couldn't instantiate service 'Location'.", ex); }
     try { DiscordRichPresence = new RichPresenceClient(this); } catch (Exception ex) { Logger.Log(Severity.Warning, "Couldn't instantiate service 'DiscordRichPresence'.", ex); }
     try { StatusWatcher = new StatusWatcher(this); } catch (Exception ex) { Logger.Log(Severity.Warning, "Couldn't instantiate service 'StatusWatcher'.", ex); }
     try { CargoWatcher = new CargoWatcher(this); } catch (Exception ex) { Logger.Log(Severity.Warning, "Couldn't instantiate service 'CargoWatcher'.", ex); }
     try { Status = EliteAPI.Status.GameStatus.FromFile(new FileInfo(JournalDirectory + "//Status.json"), this); } catch (Exception ex) { Logger.Log(Severity.Warning, "Couldn't instantiate service 'Status'.", ex); }
     try { JournalParser = new JournalParser(this); } catch (Exception ex) { Logger.Log(Severity.Warning, "Couldn't instantiate service 'JournalParser'.", ex); }
     try { MaterialWatcher = new MaterialWatcher(this); } catch (Exception ex) { Logger.Log(Severity.Warning, "Couldn't instantiate service 'MaterialWatcher'.", ex); }
     JournalParser.processedLogs = new List <string>();
 }
 private void OnApplicationFocus(bool focus)
 {
     if (focus && locationStatus == LocationStatus.LocationPermissionRequested)
     {
         StartCoroutine(EnsureLocationAndroid());
     }
     if (!focus && locationStatus == LocationStatus.LocationPermissionNotAcquired)
     {
         if (Application.platform == RuntimePlatform.Android)
         {
             locationStatus = LocationStatus.LocationPermissionRequested;
         }
     }
 }
Exemple #11
0
        /// <summary>
        /// 根据地址获取坐标
        /// </summary>
        /// <param name="addr"></param>
        /// <returns></returns>
        public static Location GetLocation(string addr)
        {
            LocationStatus ls     = null;
            string         getStr = HttpUtil.HttpGet(BaiduMapGeocoderUrl, "output=json&address=" + addr);

            ls = JsonUtil.parse <LocationStatus>(getStr);
            if (ls != null && ls.result != null && ls.result.location != null)
            {
                return(ls.result.location);
            }
            else
            {
                return(null);
            }
        }
Exemple #12
0
        public void OnGpsStatusChanged(GpsEvent e)
        {
            LocationStatus gpsStatus = LocationStatus.Started;

            if (e == GpsEvent.Stopped)
            {
                gpsStatus = LocationStatus.Stopped;
            }
            var handler = LocationStatusChanged;

            handler?.Invoke(this, new LocationStatusChangedEventArgs()
            {
                Status = gpsStatus
            });
        }
        private void OnApiLocationChanged(object sender, LocationStatus e) =>
        Dispatcher?.Invoke(() =>
        {
            if (e.StarSystem != null)
            {
                gbStarSystem.Visibility            = Visibility.Visible;
                tbStarSystem_Name.Text             = e.StarSystem.Name;
                tbStarSystem_Population.Text       = e.StarSystem.Population.ToString("#,##0");
                tbStarSystem_Government.Text       = e.StarSystem.Government.ToString();
                tbStarSystem_Security.Text         = e.StarSystem.Security.ToString();
                tbStarSystem_Economy.Text          = e.StarSystem.Economy.ToString();
                tbStarSystem_SecondaryEconomy.Text = e.StarSystem.SecondEconomy.ToString();
            }
            else
            {
                gbStarSystem.Visibility = Visibility.Hidden;
            }

            if (e.Body != null)
            {
                gbSystemBody.Visibility = Visibility.Visible;
                tbSystemBody_Type.Text  = TextHelper.GetText(e.Body.Type);
                tbSystemBody_Name.Text  = e.Body.Name;
            }
            else
            {
                gbSystemBody.Visibility = Visibility.Hidden;
            }

            if (e.Station != null)
            {
                gbStation.Visibility      = Visibility.Visible;
                tbStation_Name.Text       = e.Station.Name;
                tbStation_Type.Text       = e.Station.Type.ToString();
                tbStation_Government.Text = e.Station.Government.ToString();
                tbStation_Economy.Text    = e.Station.Economy.ToString();
            }
            else
            {
                gbStation.Visibility = Visibility.Hidden;
            }
        });
        IEnumerator EnsureLocationAndroid()
        {
            int maxWait = timeOut > 0 ? timeOut : 20;

            if (!Permission.HasUserAuthorizedPermission(Permission.FineLocation))
            {
                Logger.Log("User rejected location permission.");
                initLocationServiceException = new LocationException("User rejected location permission");
                yield break;//Exception will be thrown from RetrieveLocation()
            }
            else
            {
                locationStatus = LocationStatus.LocationPermissionAcquired;
                Logger.Log("User accepted location permission.");
                Input.location.Start();
                while (Input.location.status == LocationServiceStatus.Initializing && maxWait > 0)
                {
                    yield return(new WaitForSeconds(1));

                    Logger.Log("Initializing Location Service, Exiting " + maxWait);
                    maxWait--;
                }
                // Service didn't initialize in before the timeOut threshold
                if (maxWait < 1)
                {
                    Logger.Log("Initializing Location Service Timed Out");
                    Input.location.Stop();
                    initLocationServiceException = new LocationException("Initializing Location Service Timed Out");
                    yield break; //Exception will be thrown from RetrieveLocation()
                }
                else
                {
                    if (Input.location.status == LocationServiceStatus.Running)
                    {
                        Logger.Log("Location Service succeded, Stopping LocationService, data saved to Input.location.lastData");
                        Input.location.Stop();
                    }
                    yield break;
                }
            }
        }
Exemple #15
0
        private async Task SplitterDefaults()
        {
            var tasks = new List <Task>();

            using (var odw = new OracleDatabaseWorker(tbOracleConnectionStringText))
            {
                List <string> wirecentersids = odw.GetDistinctDataColumn(splitterTable, "CR_SITE_ID");
                ;
                List <string> splitterstatuses = odw.GetDistinctDataColumn(splitterTable, "STATUS");
                splitterstatuses.Add("UNKNOWN");

                //splitter eqtype
                var del = new MyDelegate((lst) =>
                {
                    using (var uow = new UnitOfWork(Tsdl))
                    {
                        var gss = GlobalSystemSettings.GetInstanceFromDatabase(uow);
                        //////////
                        if (gss.SplitterEquipmentType == null)
                        {
                            var eq = new EquipmentType(uow)
                            {
                                TypeName = "SPLITTER"
                            };
                            uow.Save(eq);
                            uow.CommitChanges();
                            gss.SplitterEquipmentType = eq;
                            uow.CommitChanges();
                        }
                        splitterEquipmentTypeOid = gss.SplitterEquipmentType.Oid;
                    }
                    return(true);
                });


                IAsyncResult sizeres = del.BeginInvoke(null, null, null);


                await Task.FromResult(sizeres);

                //status
                del = new MyDelegate((lst) =>
                {
                    using (var uow = new UnitOfWork(Tsdl))
                    {
                        foreach (var str in lst
                                 .Where(s => s != "" && !uow.Query <LocationStatus>().Select(x => x.StatusName).Contains(s))
                                 )
                        {
                            LocationStatus cs = new LocationStatus(uow)
                            {
                                StatusName = str
                            };
                            uow.CommitChanges();
                        }
                    }
                    return(true);
                });
                IAsyncResult statusres = del.BeginInvoke(splitterstatuses, null, null);

                await Task.FromResult(statusres);

                ////wirecenter
                //del = new MyDelegate((lst) =>
                //{
                //    using (var uow = new UnitOfWork(Tsdl))
                //    {
                //        foreach (var str in lst
                //            .Where(s => s != "" && !uow.Query<Wirecenter>().Select(x => x.ExternalSystemId.ToString()).Contains(s))
                //        )
                //        {
                //            Wirecenter cs = new Wirecenter(uow) { ExternalSystemId = int.TryParse(str, out int eid) ? eid : 0, LocationName = str, CLLI = str, SourceTable = splitterTable };
                //            uow.CommitChanges();
                //        }

                //    }

                //    return true;
                //});
                //IAsyncResult wcres = del.BeginInvoke(wirecentersids, null, null);

                //await Task.FromResult(wcres);
            }
        }
Exemple #16
0
        public virtual void IntegrityCheckProc(INItemSiteSummary itemsite, string minPeriod, bool replanBackorders)
        {
            using (PXConnectionScope cs = new PXConnectionScope())
            {
                using (PXTransactionScope ts = new PXTransactionScope())
                {
                    foreach (INItemPlan p in PXSelectReadonly2 <INItemPlan, LeftJoin <Note, On <Note.noteID, Equal <INItemPlan.refNoteID> > >, Where <INItemPlan.inventoryID, Equal <Current <INItemSiteSummary.inventoryID> >, And <INItemPlan.siteID, Equal <Current <INItemSiteSummary.siteID> >, And <Note.noteID, IsNull> > > > .SelectMultiBound(this, new object[] { itemsite }))
                    {
                        PXDatabase.Delete <INItemPlan>(new PXDataFieldRestrict("PlanID", PXDbType.BigInt, 8, p.PlanID, PXComp.EQ));
                    }

                    foreach (INItemPlan p in PXSelectReadonly2 <INItemPlan,
                                                                InnerJoin <INRegister, On <INRegister.noteID, Equal <INItemPlan.refNoteID>, And <INRegister.siteID, Equal <INItemPlan.siteID> > > >,
                                                                Where <INRegister.docType, Equal <INDocType.transfer>,
                                                                       And <INRegister.released, Equal <boolTrue>,
                                                                            And <INItemPlan.inventoryID, Equal <Current <INItemSiteSummary.inventoryID> >,
                                                                                 And <INItemPlan.siteID, Equal <Current <INItemSiteSummary.siteID> > > > > > > .SelectMultiBound(this, new object[] { itemsite }))
                    {
                        PXDatabase.Delete <INItemPlan>(new PXDataFieldRestrict("PlanID", PXDbType.BigInt, 8, p.PlanID, PXComp.EQ));
                    }

                    foreach (PXResult <INTranSplit, INRegister, INSite, INItemSite> res in PXSelectJoin <INTranSplit,
                                                                                                         InnerJoin <INRegister, On <INRegister.docType, Equal <INTranSplit.docType>, And <INRegister.refNbr, Equal <INTranSplit.refNbr> > >,
                                                                                                                    InnerJoin <INSite, On <INSite.siteID, Equal <INRegister.toSiteID> >,
                                                                                                                               LeftJoin <INItemSite, On <INItemSite.inventoryID, Equal <INTranSplit.inventoryID>, And <INItemSite.siteID, Equal <INRegister.toSiteID> > >,
                                                                                                                                         LeftJoin <INTran, On <INTran.origTranType, Equal <INTranSplit.tranType>, And <INTran.origRefNbr, Equal <INTranSplit.refNbr>, And <INTran.origLineNbr, Equal <INTranSplit.lineNbr> > > >,
                                                                                                                                                   LeftJoin <INItemPlan, On <INItemPlan.planID, Equal <INTranSplit.planID> > > > > > >,
                                                                                                         Where <INRegister.docType, Equal <INDocType.transfer>,
                                                                                                                And2 <Where <INRegister.released, Equal <boolTrue>, And <INTranSplit.released, Equal <boolTrue>,
                                                                                                                                                                         Or <INRegister.released, Equal <boolFalse> > > >,
                                                                                                                      And <INTranSplit.inventoryID, Equal <Current <INItemSiteSummary.inventoryID> >,
                                                                                                                           And <INTranSplit.siteID, Equal <Current <INItemSiteSummary.siteID> >,
                                                                                                                                And <INTranSplit.invtMult, Equal <shortMinus1>,
                                                                                                                                     And <INItemPlan.planID, IsNull,
                                                                                                                                          And <INTran.refNbr, IsNull> > > > > > > > .SelectMultiBound(this, new object[] { itemsite }))
                    {
                        INTranSplit split = res;
                        INRegister  doc   = res;

                        if (split.TransferType == INTransferType.OneStep && doc.Released == true)
                        {
                            if (doc.TransferType == INTransferType.OneStep)
                            {
                                doc.TransferType = INTransferType.TwoStep;
                                Caches[typeof(INRegister)].Update(doc);
                            }
                            split.TransferType = INTransferType.TwoStep;
                        }
                        INItemPlan plan = INItemPlanIDAttribute.DefaultValues(this.Caches[typeof(INTranSplit)], res);
                        if (plan.LocationID == null)
                        {
                            plan.LocationID = ((INItemSite)res).DfltReceiptLocationID ?? ((INSite)res).ReceiptLocationID;
                        }

                        plan = (INItemPlan)this.Caches[typeof(INItemPlan)].Insert(plan);

                        split.PlanID = plan.PlanID;
                        Caches[typeof(INTranSplit)].SetStatus(split, PXEntryStatus.Updated);
                    }


                    PXDatabase.Update <INSiteStatus>(
                        new PXDataFieldRestrict <INSiteStatus.inventoryID>(PXDbType.Int, 4, itemsite.InventoryID, PXComp.EQ),
                        new PXDataFieldRestrict <INSiteStatus.siteID>(PXDbType.Int, 4, itemsite.SiteID, PXComp.EQ),
                        new PXDataFieldAssign <INSiteStatus.qtyAvail>(PXDbType.Decimal, 0m),
                        new PXDataFieldAssign <INSiteStatus.qtyHardAvail>(PXDbType.Decimal, 0m),
                        new PXDataFieldAssign <INSiteStatus.qtyNotAvail>(PXDbType.Decimal, 0m),
                        new PXDataFieldAssign <INSiteStatus.qtyINIssues>(PXDbType.Decimal, 0m),
                        new PXDataFieldAssign <INSiteStatus.qtyINReceipts>(PXDbType.Decimal, 0m),
                        new PXDataFieldAssign <INSiteStatus.qtyInTransit>(PXDbType.Decimal, 0m),
                        new PXDataFieldAssign <INSiteStatus.qtyINAssemblySupply>(PXDbType.Decimal, 0m),
                        new PXDataFieldAssign <INSiteStatus.qtyINAssemblyDemand>(PXDbType.Decimal, 0m),
                        new PXDataFieldAssign <INSiteStatus.qtyINReplaned>(PXDbType.Decimal, 0m),
                        new PXDataFieldAssign <INSiteStatus.qtyPOPrepared>(PXDbType.Decimal, 0m),
                        new PXDataFieldAssign <INSiteStatus.qtyPOOrders>(PXDbType.Decimal, 0m),
                        new PXDataFieldAssign <INSiteStatus.qtyPOReceipts>(PXDbType.Decimal, 0m),
                        new PXDataFieldAssign <INSiteStatus.qtySOPrepared>(PXDbType.Decimal, 0m),
                        new PXDataFieldAssign <INSiteStatus.qtySOBooked>(PXDbType.Decimal, 0m),
                        new PXDataFieldAssign <INSiteStatus.qtySOShipped>(PXDbType.Decimal, 0m),
                        new PXDataFieldAssign <INSiteStatus.qtySOShipping>(PXDbType.Decimal, 0m),
                        new PXDataFieldAssign <INSiteStatus.qtySOBackOrdered>(PXDbType.Decimal, 0m),
                        new PXDataFieldAssign <INSiteStatus.qtySOFixed>(PXDbType.Decimal, 0m),
                        new PXDataFieldAssign <INSiteStatus.qtyPOFixedOrders>(PXDbType.Decimal, 0m),
                        new PXDataFieldAssign <INSiteStatus.qtyPOFixedPrepared>(PXDbType.Decimal, 0m),
                        new PXDataFieldAssign <INSiteStatus.qtyPOFixedReceipts>(PXDbType.Decimal, 0m),
                        new PXDataFieldAssign <INSiteStatus.qtySODropShip>(PXDbType.Decimal, 0m),
                        new PXDataFieldAssign <INSiteStatus.qtyPODropShipOrders>(PXDbType.Decimal, 0m),
                        new PXDataFieldAssign <INSiteStatus.qtyPODropShipPrepared>(PXDbType.Decimal, 0m),
                        new PXDataFieldAssign <INSiteStatus.qtyPODropShipReceipts>(PXDbType.Decimal, 0m),
                        new PXDataFieldAssign <INSiteStatus.qtyInTransitToSO>(PXDbType.Decimal, 0m)
                        );

                    PXDatabase.Update <INLocationStatus>(
                        new PXDataFieldRestrict <INLocationStatus.inventoryID>(PXDbType.Int, 4, itemsite.InventoryID, PXComp.EQ),
                        new PXDataFieldRestrict <INLocationStatus.siteID>(PXDbType.Int, 4, itemsite.SiteID, PXComp.EQ),
                        new PXDataFieldAssign <INLocationStatus.qtyAvail>(PXDbType.DirectExpression, "QtyOnHand"),
                        new PXDataFieldAssign <INLocationStatus.qtyHardAvail>(PXDbType.DirectExpression, "QtyOnHand"),
                        new PXDataFieldAssign <INLocationStatus.qtyINIssues>(PXDbType.Decimal, 0m),
                        new PXDataFieldAssign <INLocationStatus.qtyINReceipts>(PXDbType.Decimal, 0m),
                        new PXDataFieldAssign <INLocationStatus.qtyInTransit>(PXDbType.Decimal, 0m),
                        new PXDataFieldAssign <INLocationStatus.qtyINAssemblySupply>(PXDbType.Decimal, 0m),
                        new PXDataFieldAssign <INLocationStatus.qtyINAssemblyDemand>(PXDbType.Decimal, 0m),
                        new PXDataFieldAssign <INLocationStatus.qtyPOPrepared>(PXDbType.Decimal, 0m),
                        new PXDataFieldAssign <INLocationStatus.qtyPOOrders>(PXDbType.Decimal, 0m),
                        new PXDataFieldAssign <INLocationStatus.qtyPOReceipts>(PXDbType.Decimal, 0m),
                        new PXDataFieldAssign <INLocationStatus.qtySOPrepared>(PXDbType.Decimal, 0m),
                        new PXDataFieldAssign <INLocationStatus.qtySOBooked>(PXDbType.Decimal, 0m),
                        new PXDataFieldAssign <INLocationStatus.qtySOShipped>(PXDbType.Decimal, 0m),
                        new PXDataFieldAssign <INLocationStatus.qtySOShipping>(PXDbType.Decimal, 0m),
                        new PXDataFieldAssign <INLocationStatus.qtySOBackOrdered>(PXDbType.Decimal, 0m),
                        new PXDataFieldAssign <INLocationStatus.qtySOFixed>(PXDbType.Decimal, 0m),
                        new PXDataFieldAssign <INLocationStatus.qtyPOFixedOrders>(PXDbType.Decimal, 0m),
                        new PXDataFieldAssign <INLocationStatus.qtyPOFixedPrepared>(PXDbType.Decimal, 0m),
                        new PXDataFieldAssign <INLocationStatus.qtyPOFixedReceipts>(PXDbType.Decimal, 0m),
                        new PXDataFieldAssign <INLocationStatus.qtySODropShip>(PXDbType.Decimal, 0m),
                        new PXDataFieldAssign <INLocationStatus.qtyPODropShipOrders>(PXDbType.Decimal, 0m),
                        new PXDataFieldAssign <INLocationStatus.qtyPODropShipPrepared>(PXDbType.Decimal, 0m),
                        new PXDataFieldAssign <INLocationStatus.qtyPODropShipReceipts>(PXDbType.Decimal, 0m),
                        new PXDataFieldAssign <INLocationStatus.qtyInTransitToSO>(PXDbType.Decimal, 0m)
                        );

                    PXDatabase.Update <INLotSerialStatus>(
                        new PXDataFieldRestrict <INLotSerialStatus.inventoryID>(PXDbType.Int, 4, itemsite.InventoryID, PXComp.EQ),
                        new PXDataFieldRestrict <INLotSerialStatus.siteID>(PXDbType.Int, 4, itemsite.SiteID, PXComp.EQ),
                        new PXDataFieldAssign <INLotSerialStatus.qtyAvail>(PXDbType.DirectExpression, "QtyOnHand"),
                        new PXDataFieldAssign <INLotSerialStatus.qtyHardAvail>(PXDbType.DirectExpression, "QtyOnHand"),
                        new PXDataFieldAssign <INLotSerialStatus.qtyINIssues>(PXDbType.Decimal, 0m),
                        new PXDataFieldAssign <INLotSerialStatus.qtyINReceipts>(PXDbType.Decimal, 0m),
                        new PXDataFieldAssign <INLotSerialStatus.qtyInTransit>(PXDbType.Decimal, 0m),
                        new PXDataFieldAssign <INLotSerialStatus.qtyINAssemblySupply>(PXDbType.Decimal, 0m),
                        new PXDataFieldAssign <INLotSerialStatus.qtyINAssemblyDemand>(PXDbType.Decimal, 0m),
                        new PXDataFieldAssign <INLotSerialStatus.qtyPOPrepared>(PXDbType.Decimal, 0m),
                        new PXDataFieldAssign <INLotSerialStatus.qtyPOOrders>(PXDbType.Decimal, 0m),
                        new PXDataFieldAssign <INLotSerialStatus.qtyPOReceipts>(PXDbType.Decimal, 0m),
                        new PXDataFieldAssign <INLotSerialStatus.qtySOPrepared>(PXDbType.Decimal, 0m),
                        new PXDataFieldAssign <INLotSerialStatus.qtySOBooked>(PXDbType.Decimal, 0m),
                        new PXDataFieldAssign <INLotSerialStatus.qtySOShipped>(PXDbType.Decimal, 0m),
                        new PXDataFieldAssign <INLotSerialStatus.qtySOShipping>(PXDbType.Decimal, 0m),
                        new PXDataFieldAssign <INLotSerialStatus.qtySOBackOrdered>(PXDbType.Decimal, 0m),
                        new PXDataFieldAssign <INLotSerialStatus.qtySOFixed>(PXDbType.Decimal, 0m),
                        new PXDataFieldAssign <INLotSerialStatus.qtyPOFixedOrders>(PXDbType.Decimal, 0m),
                        new PXDataFieldAssign <INLotSerialStatus.qtyPOFixedPrepared>(PXDbType.Decimal, 0m),
                        new PXDataFieldAssign <INLotSerialStatus.qtyPOFixedReceipts>(PXDbType.Decimal, 0m),
                        new PXDataFieldAssign <INLotSerialStatus.qtySODropShip>(PXDbType.Decimal, 0m),
                        new PXDataFieldAssign <INLotSerialStatus.qtyPODropShipOrders>(PXDbType.Decimal, 0m),
                        new PXDataFieldAssign <INLotSerialStatus.qtyPODropShipPrepared>(PXDbType.Decimal, 0m),
                        new PXDataFieldAssign <INLotSerialStatus.qtyPODropShipReceipts>(PXDbType.Decimal, 0m),
                        new PXDataFieldAssign <INLotSerialStatus.qtyInTransitToSO>(PXDbType.Decimal, 0m)

                        );

                    PXDatabase.Update <INItemLotSerial>(
                        new PXDataFieldRestrict("InventoryID", PXDbType.Int, 4, itemsite.InventoryID, PXComp.EQ),
                        new PXDataFieldAssign("QtyAvail", PXDbType.DirectExpression, "QtyOnHand"),
                        new PXDataFieldAssign("QtyHardAvail", PXDbType.DirectExpression, "QtyOnHand"),
                        new PXDataFieldAssign("QtyINTransit", PXDbType.Decimal, 0m)
                        );

                    PXDatabase.Update <INSiteLotSerial>(
                        new PXDataFieldRestrict <INSiteLotSerial.inventoryID>(PXDbType.Int, 4, itemsite.InventoryID, PXComp.EQ),
                        new PXDataFieldRestrict <INSiteLotSerial.siteID>(PXDbType.Int, 4, itemsite.SiteID, PXComp.EQ),
                        new PXDataFieldAssign <INSiteLotSerial.qtyAvail>(PXDbType.DirectExpression, "QtyOnHand"),
                        new PXDataFieldAssign <INSiteLotSerial.qtyHardAvail>(PXDbType.DirectExpression, "QtyOnHand"),
                        new PXDataFieldAssign <INSiteLotSerial.qtyInTransit>(PXDbType.Decimal, 0m)
                        );


                    foreach (PXResult <ReadOnlyLocationStatus, INLocation> res in PXSelectJoinGroupBy <ReadOnlyLocationStatus, InnerJoin <INLocation, On <INLocation.locationID, Equal <ReadOnlyLocationStatus.locationID> > >, Where <ReadOnlyLocationStatus.inventoryID, Equal <Current <INItemSiteSummary.inventoryID> >, And <ReadOnlyLocationStatus.siteID, Equal <Current <INItemSiteSummary.siteID> > > >, Aggregate <GroupBy <ReadOnlyLocationStatus.inventoryID, GroupBy <ReadOnlyLocationStatus.siteID, GroupBy <ReadOnlyLocationStatus.subItemID, GroupBy <INLocation.inclQtyAvail, Sum <ReadOnlyLocationStatus.qtyOnHand> > > > > > > .SelectMultiBound(this, new object[] { itemsite }))
                    {
                        SiteStatus status = new SiteStatus();
                        status.InventoryID = ((ReadOnlyLocationStatus)res).InventoryID;
                        status.SubItemID   = ((ReadOnlyLocationStatus)res).SubItemID;
                        status.SiteID      = ((ReadOnlyLocationStatus)res).SiteID;
                        status             = (SiteStatus)sitestatus.Cache.Insert(status);

                        if (((INLocation)res).InclQtyAvail == true)
                        {
                            status.QtyAvail     += ((ReadOnlyLocationStatus)res).QtyOnHand;
                            status.QtyHardAvail += ((ReadOnlyLocationStatus)res).QtyOnHand;
                        }
                        else
                        {
                            status.QtyNotAvail += ((ReadOnlyLocationStatus)res).QtyOnHand;
                        }
                    }

                    INPlanType plan60 = PXSelect <INPlanType, Where <INPlanType.planType, Equal <INPlanConstants.plan60> > > .Select(this);

                    INPlanType plan61 = PXSelect <INPlanType, Where <INPlanType.planType, Equal <INPlanConstants.plan61> > > .Select(this);

                    INPlanType plan70 = PXSelect <INPlanType, Where <INPlanType.planType, Equal <INPlanConstants.plan70> > > .Select(this);

                    INPlanType plan74 = PXSelect <INPlanType, Where <INPlanType.planType, Equal <INPlanConstants.plan74> > > .Select(this);

                    INPlanType plan76 = PXSelect <INPlanType, Where <INPlanType.planType, Equal <INPlanConstants.plan76> > > .Select(this);

                    INPlanType plan42 = PXSelect <INPlanType, Where <INPlanType.planType, Equal <INPlanConstants.plan42> > > .Select(this);

                    INPlanType plan44 = PXSelect <INPlanType, Where <INPlanType.planType, Equal <INPlanConstants.plan44> > > .Select(this);

                    foreach (PXResult <INItemPlan, INPlanType, SOShipLineSplit, POReceiptLineSplit> res in PXSelectJoin <INItemPlan,
                                                                                                                         InnerJoin <INPlanType, On <INPlanType.planType, Equal <INItemPlan.planType> >,
                                                                                                                                    LeftJoin <SOShipLineSplit, On <SOShipLineSplit.planID, Equal <INItemPlan.planID> >,
                                                                                                                                              LeftJoin <POReceiptLineSplit, On <POReceiptLineSplit.planID, Equal <INItemPlan.planID> > > > >,
                                                                                                                         Where <INItemPlan.inventoryID, Equal <Current <INItemSiteSummary.inventoryID> >, And <INItemPlan.siteID, Equal <Current <INItemSiteSummary.siteID> > > > > .SelectMultiBound(this, new object[] { itemsite }))
                    {
                        INItemPlan         plan     = (INItemPlan)res;
                        INPlanType         plantype = (INPlanType)res;
                        INPlanType         locplantype;
                        SOShipLineSplit    sosplit = (SOShipLineSplit)res;
                        POReceiptLineSplit posplit = (POReceiptLineSplit)res;

                        if (plan.InventoryID != null &&
                            plan.SubItemID != null &&
                            plan.SiteID != null)
                        {
                            switch (plan.PlanType)
                            {
                            case INPlanConstants.Plan61:
                            case INPlanConstants.Plan63:
                                locplantype = plantype;

                                if (sosplit.ShipmentNbr != null)
                                {
                                    SOOrderType ordetype = PXSelect <SOOrderType, Where <SOOrderType.orderType, Equal <Current <SOShipLineSplit.origOrderType> > > > .SelectSingleBound(this, new object[] { sosplit });

                                    if (plan.OrigPlanType == null)
                                    {
                                        plan.OrigPlanType = ordetype.OrderPlanType;
                                    }

                                    if (plan.OrigPlanType == INPlanConstants.Plan60 && sosplit.IsComponentItem != true)
                                    {
                                        plantype = plantype - plan60;
                                    }

                                    if ((plan.OrigPlanType == INPlanConstants.Plan61 || plan.OrigPlanType == INPlanConstants.Plan63) && sosplit.IsComponentItem != true)
                                    {
                                        plantype = plantype - plan61;
                                    }
                                }

                                break;

                            case INPlanConstants.Plan71:
                            case INPlanConstants.Plan72:
                                locplantype = plantype;
                                if (posplit.ReceiptNbr == null)
                                {
                                    PXDatabase.Delete <INItemPlan>(new PXDataFieldRestrict("PlanID", PXDbType.BigInt, 8, plan.PlanID, PXComp.EQ));
                                    continue;
                                }
                                if (posplit.PONbr != null)
                                {
                                    plantype = plantype - plan70;
                                }
                                break;

                            case INPlanConstants.Plan77:
                                locplantype = plantype;
                                if (posplit.ReceiptNbr != null && posplit.PONbr != null)
                                {
                                    plantype = plantype - plan76;
                                }

                                break;

                            case INPlanConstants.Plan75:
                                locplantype = plantype;
                                if (posplit.ReceiptNbr != null && posplit.PONbr != null)
                                {
                                    plantype = plantype - plan74;
                                }
                                break;

                            case INPlanConstants.Plan43:
                            case INPlanConstants.Plan45:
                                if (plan.OrigPlanType == INPlanConstants.Plan44)
                                {
                                    plantype = plantype - plan44;
                                }

                                if (plan.OrigPlanType == INPlanConstants.Plan42)
                                {
                                    plantype = plantype - plan42;
                                }
                                locplantype = plantype;
                                break;

                            default:
                                locplantype = plantype;
                                break;
                            }

                            if (plan.LocationID != null)
                            {
                                LocationStatus item = INItemPlanIDAttribute.UpdateAllocatedQuantitiesBase <LocationStatus>(this, plan, locplantype, true);
                                INItemPlanIDAttribute.UpdateAllocatedQuantitiesBase <SiteStatus>(this, plan, plantype, (bool)item.InclQtyAvail);
                                if (!string.IsNullOrEmpty(plan.LotSerialNbr))
                                {
                                    INItemPlanIDAttribute.UpdateAllocatedQuantitiesBase <LotSerialStatus>(this, plan, locplantype, true);
                                    INItemPlanIDAttribute.UpdateAllocatedQuantitiesBase <ItemLotSerial>(this, plan, locplantype, true);
                                    INItemPlanIDAttribute.UpdateAllocatedQuantitiesBase <SiteLotSerial>(this, plan, locplantype, true);
                                }
                            }
                            else
                            {
                                INItemPlanIDAttribute.UpdateAllocatedQuantitiesBase <SiteStatus>(this, plan, plantype, true);
                                if (!string.IsNullOrEmpty(plan.LotSerialNbr))
                                {
                                    //TODO: check if LotSerialNbr was allocated on OrigPlanType
                                    INItemPlanIDAttribute.UpdateAllocatedQuantitiesBase <ItemLotSerial>(this, plan, plantype, true);
                                    INItemPlanIDAttribute.UpdateAllocatedQuantitiesBase <SiteLotSerial>(this, plan, plantype, true);
                                }
                            }
                        }
                    }
                    if (replanBackorders)
                    {
                        INReleaseProcess.ReplanBackOrders(this);
                        initemplan.Cache.Persist(PXDBOperation.Insert);
                        initemplan.Cache.Persist(PXDBOperation.Update);
                    }

                    Caches[typeof(INTranSplit)].Persist(PXDBOperation.Update);

                    sitestatus.Cache.Persist(PXDBOperation.Insert);
                    sitestatus.Cache.Persist(PXDBOperation.Update);

                    locationstatus.Cache.Persist(PXDBOperation.Insert);
                    locationstatus.Cache.Persist(PXDBOperation.Update);

                    lotserialstatus.Cache.Persist(PXDBOperation.Insert);
                    lotserialstatus.Cache.Persist(PXDBOperation.Update);

                    itemlotserial.Cache.Persist(PXDBOperation.Insert);
                    itemlotserial.Cache.Persist(PXDBOperation.Update);

                    sitelotserial.Cache.Persist(PXDBOperation.Insert);
                    sitelotserial.Cache.Persist(PXDBOperation.Update);

                    if (minPeriod != null)
                    {
                        FinPeriod period =
                            PXSelect <FinPeriod,
                                      Where <FinPeriod.finPeriodID, Equal <Required <FinPeriod.finPeriodID> > > >
                            .SelectWindowed(this, 0, 1, minPeriod);

                        if (period == null)
                        {
                            return;
                        }
                        DateTime startDate = (DateTime)period.StartDate;

                        PXDatabase.Delete <INItemCostHist>(
                            new PXDataFieldRestrict("InventoryID", PXDbType.Int, 4, itemsite.InventoryID, PXComp.EQ),
                            new PXDataFieldRestrict("CostSiteID", PXDbType.Int, 4, itemsite.SiteID, PXComp.EQ),
                            new PXDataFieldRestrict("FinPeriodID", PXDbType.Char, 6, minPeriod, PXComp.GE)
                            );

                        PXDatabase.Delete <INItemSalesHistD>(
                            new PXDataFieldRestrict("InventoryID", PXDbType.Int, 4, itemsite.InventoryID, PXComp.EQ),
                            new PXDataFieldRestrict("SiteID", PXDbType.Int, 4, itemsite.SiteID, PXComp.EQ),
                            new PXDataFieldRestrict("QtyPlanSales", PXDbType.Decimal, 0m),
                            new PXDataFieldRestrict("SDate", PXDbType.DateTime, 8, startDate, PXComp.GE)

                            );
                        PXDatabase.Delete <INItemCustSalesStats>(
                            new PXDataFieldRestrict("InventoryID", PXDbType.Int, 4, itemsite.InventoryID, PXComp.EQ),
                            new PXDataFieldRestrict("SiteID", PXDbType.Int, 4, itemsite.SiteID, PXComp.EQ),
                            new PXDataFieldRestrict("LastDate", PXDbType.DateTime, 8, startDate, PXComp.GE));

                        PXDatabase.Update <INItemSalesHistD>(
                            new PXDataFieldAssign("QtyIssues", PXDbType.Decimal, 0m),
                            new PXDataFieldAssign("QtyExcluded", PXDbType.Decimal, 0m),
                            new PXDataFieldRestrict("InventoryID", PXDbType.Int, 4, itemsite.InventoryID, PXComp.EQ),
                            new PXDataFieldRestrict("SiteID", PXDbType.Int, 4, itemsite.SiteID, PXComp.EQ),
                            new PXDataFieldRestrict("SDate", PXDbType.DateTime, 8, startDate, PXComp.GE)
                            );

                        foreach (INLocation loc in PXSelectReadonly2 <INLocation, InnerJoin <INItemCostHist, On <INItemCostHist.costSiteID, Equal <INLocation.locationID> > >, Where <INLocation.siteID, Equal <Current <INItemSiteSummary.siteID> >, And <INItemCostHist.inventoryID, Equal <Current <INItemSiteSummary.inventoryID> > > > > .SelectMultiBound(this, new object[] { itemsite }))
                        {
                            PXDatabase.Delete <INItemCostHist>(
                                new PXDataFieldRestrict("InventoryID", PXDbType.Int, 4, itemsite.InventoryID, PXComp.EQ),
                                new PXDataFieldRestrict("CostSiteID", PXDbType.Int, 4, loc.LocationID, PXComp.EQ),
                                new PXDataFieldRestrict("FinPeriodID", PXDbType.Char, 6, minPeriod, PXComp.GE)
                                );
                        }

                        PXDatabase.Delete <INItemSiteHist>(
                            new PXDataFieldRestrict("InventoryID", PXDbType.Int, 4, itemsite.InventoryID, PXComp.EQ),
                            new PXDataFieldRestrict("SiteID", PXDbType.Int, 4, itemsite.SiteID, PXComp.EQ),
                            new PXDataFieldRestrict("FinPeriodID", PXDbType.Char, 6, minPeriod, PXComp.GE)
                            );

                        PXDatabase.Delete <INItemSiteHistD>(
                            new PXDataFieldRestrict("InventoryID", PXDbType.Int, 4, itemsite.InventoryID, PXComp.EQ),
                            new PXDataFieldRestrict("SiteID", PXDbType.Int, 4, itemsite.SiteID, PXComp.EQ),
                            new PXDataFieldRestrict("SDate", PXDbType.DateTime, 8, startDate, PXComp.GE)
                            );

                        INTran prev_tran = null;
                        foreach (PXResult <INTran, INTranSplit> res in PXSelectReadonly2 <INTran, InnerJoin <INTranSplit, On <INTranSplit.tranType, Equal <INTran.tranType>, And <INTranSplit.refNbr, Equal <INTran.refNbr>, And <INTranSplit.lineNbr, Equal <INTran.lineNbr> > > > >, Where <INTran.inventoryID, Equal <Current <INItemSiteSummary.inventoryID> >, And <INTran.siteID, Equal <Current <INItemSiteSummary.siteID> >, And <INTran.finPeriodID, GreaterEqual <Required <INTran.finPeriodID> >, And <INTran.released, Equal <boolTrue> > > > >, OrderBy <Asc <INTran.tranType, Asc <INTran.refNbr, Asc <INTran.lineNbr> > > > > .SelectMultiBound(this, new object[] { itemsite }, minPeriod))
                        {
                            INTran      tran  = res;
                            INTranSplit split = res;

                            if (!Caches[typeof(INTran)].ObjectsEqual(prev_tran, tran))
                            {
                                INReleaseProcess.UpdateSalesHistD(this, tran);
                                INReleaseProcess.UpdateCustSalesStats(this, tran);

                                prev_tran = tran;
                            }

                            if (split.BaseQty != 0m)
                            {
                                INReleaseProcess.UpdateSiteHist(this, res, split);
                                INReleaseProcess.UpdateSiteHistD(this, split);
                            }
                        }

                        foreach (PXResult <INTran, INTranCost> res in PXSelectReadonly2 <INTran, InnerJoin <INTranCost, On <INTranCost.tranType, Equal <INTran.tranType>, And <INTranCost.refNbr, Equal <INTran.refNbr>, And <INTranCost.lineNbr, Equal <INTran.lineNbr> > > > >, Where <INTran.inventoryID, Equal <Current <INItemSiteSummary.inventoryID> >, And <INTran.siteID, Equal <Current <INItemSiteSummary.siteID> >, And <INTranCost.finPeriodID, GreaterEqual <Required <INTran.finPeriodID> >, And <INTran.released, Equal <boolTrue> > > > > > .SelectMultiBound(this, new object[] { itemsite }, minPeriod))
                        {
                            INReleaseProcess.UpdateCostHist(this, (INTranCost)res, (INTran)res);
                        }

                        itemcosthist.Cache.Persist(PXDBOperation.Insert);
                        itemcosthist.Cache.Persist(PXDBOperation.Update);

                        itemsitehist.Cache.Persist(PXDBOperation.Insert);
                        itemsitehist.Cache.Persist(PXDBOperation.Update);

                        itemsitehistd.Cache.Persist(PXDBOperation.Insert);
                        itemsitehistd.Cache.Persist(PXDBOperation.Update);

                        itemsalehistd.Cache.Persist(PXDBOperation.Insert);
                        itemsalehistd.Cache.Persist(PXDBOperation.Update);

                        itemcustsalesstats.Cache.Persist(PXDBOperation.Insert);
                        itemcustsalesstats.Cache.Persist(PXDBOperation.Update);
                    }

                    ts.Complete();
                }

                sitestatus.Cache.Persisted(false);
                locationstatus.Cache.Persisted(false);
                lotserialstatus.Cache.Persisted(false);

                itemcosthist.Cache.Persisted(false);
                itemsitehist.Cache.Persisted(false);
                itemsitehistd.Cache.Persisted(false);
            }
        }
        /// <summary>
        /// EnsureLocation Confirm that user location is valid, user location is essential for MobiledgeX services
        /// If Location permission is denied by User an exception will be thrown once RetrieveLocation() is called
        /// </summary>
        public static IEnumerator EnsureLocation()
        {
            if (!SystemInfo.supportsLocationService)
            {
                Logger.Log("Your Device doesn't support LocationService");
                yield break;
            }
#if UNITY_EDITOR
            locationStatus = LocationStatus.LocationNotSupported;
            Logger.Log("LocationService is not supported in UNITY_EDITOR");
            yield break;
#else
            int timeOutValue = FindObjectOfType <LocationService>().timeOut;
            int maxWait      = timeOutValue > 0 ? timeOutValue : 20;
            if (Application.platform == RuntimePlatform.IPhonePlayer)
            {
                Input.location.Start();
                yield return(new WaitForEndOfFrame());

                while (Input.location.status == LocationServiceStatus.Initializing && maxWait > 0)
                {
                    yield return(new WaitForSeconds(1));

                    Logger.Log("Initializing Location Service, Exiting " + maxWait);
                    maxWait--;
                }

                // Service didn't initialize in before the timeOut threshold
                if (maxWait < 1)
                {
                    Logger.Log("Initializing Location Service Timed Out");
                    initLocationServiceException = new LocationException("Initializing Location Service Timed Out");
                    yield break;//Exception will be thrown from RetrieveLocation()
                }
                else
                {
                    if (Input.location.status == LocationServiceStatus.Running)
                    {
                        Logger.Log("Location Service succeded, Stopping LocationService, data saved to Input.location.lastData");
                        Input.location.Stop();
                    }
                    yield break;
                }
            }

            if (Application.platform == RuntimePlatform.Android)
            {
                if (Input.location.isEnabledByUser)
                {
                    locationStatus = LocationStatus.LocationPermissionAcquired;
                    Input.location.Start();
                    while (Input.location.status == LocationServiceStatus.Initializing && maxWait > 0)
                    {
                        yield return(new WaitForSeconds(1));

                        Logger.Log("Initializing Location Service, Exiting " + maxWait);
                        maxWait--;
                    }

                    // Service didn't initialize in before the timeOut threshold
                    if (maxWait < 1)
                    {
                        Logger.Log("Initializing Location Service Timed Out");
                        Input.location.Stop();
                        initLocationServiceException = new LocationException("Initializing Location Service Timed Out");
                        yield break;//Exception will be thrown from RetrieveLocation()
                    }
                    if (Input.location.status == LocationServiceStatus.Running)
                    {
                        Logger.Log("Location Service succeded, Stopping LocationService, data saved to Input.location.lastData");
                        Input.location.Stop();
                    }
                    yield break;
                }
                else
                {
                    locationStatus = LocationStatus.LocationPermissionNotAcquired;
                    Logger.Log("Location permission is not allowed by user yet.");
                    Permission.RequestUserPermission(Permission.FineLocation);
                    yield return(new WaitForSeconds(1)); // Application Out of focus , waiting for user decision on Location Permission
                }
            }
#endif
        }
Exemple #18
0
        private async Task Junction_LocationDefaults()
        {
            using (var odw = new OracleDatabaseWorker(tbOracleConnectionStringText))
            {
                List <string> boundaries = odw.GetDistinctDataColumn(junkTable, "CITY");
                List <string> types      = odw.GetListForDataColumn(@"select distinct FINALTYPE from junctions");

                List <string> statuses = odw.GetDistinctDataColumn(junkTable, "STATUS");
                statuses.Add(UNK);
                List <string> routes = odw.GetDistinctDataColumn(junkTable, "ROUTE");

                //unknjown junction
                using (var uow = new UnitOfWork(Tsdl))
                {
                    var gss  = GlobalSystemSettings.GetInstanceFromDatabase(uow);
                    var junc = new Junction(uow)
                    {
                        LocationName = UNK,
                        Status       = gss.DefaultLocationStatusActive
                    };
                    uow.CommitChanges();
                }
                //routes
                var del = new MyDelegate((lst) =>
                {
                    using (var uow = new UnitOfWork(Tsdl))
                    {
                        foreach (var str in lst
                                 .Where(s => s != ""))
                        {
                            if (!uow.Query <Route>().Any(x => x.Name == str))

                            {
                                Route cs = new Route(uow)
                                {
                                    Name = str
                                };
                                uow.CommitChanges();
                            }
                        }
                    }
                    return(true);
                });
                IAsyncResult routeres = del.BeginInvoke(routes, null, null);

                await Task.FromResult(routes);

                //boundaries
                del = new MyDelegate((lst) =>
                {
                    using (var uow = new UnitOfWork(Tsdl))
                    {
                        foreach (var str in lst
                                 .Where(s => s != ""))
                        {
                            if (!string.IsNullOrWhiteSpace(str) && !uow.Query <Boundary>().Any(x => x.Name == str))

                            {
                                Boundary cs = new Boundary(uow)
                                {
                                    Name = str
                                };
                                uow.CommitChanges();
                            }
                        }
                    }
                    return(true);
                });
                IAsyncResult boundres = del.BeginInvoke(boundaries, null, null);
                await Task.FromResult(boundres);

                //type
                del = new MyDelegate((lst) =>
                {
                    using (var uow = new UnitOfWork(Tsdl))
                    {
                        foreach (var str in lst
                                 .Where(s => s != ""))
                        {
                            if (!uow.Query <JunctionType>().Any(x => x.TypeName == str))

                            {
                                JunctionType cs = new JunctionType(uow)
                                {
                                    TypeName = str, TypeDescription = str
                                };
                                uow.CommitChanges();
                            }
                        }
                    }
                    return(true);
                });
                IAsyncResult typeres = del.BeginInvoke(types, null, null);
                await Task.FromResult(typeres);

                // status
                del = new MyDelegate((lst) =>
                {
                    using (var uow = new UnitOfWork(Tsdl))
                    {
                        foreach (var str in lst
                                 .Where(s => s != ""))
                        {
                            if (!uow.Query <LocationStatus>().Any(x => x.StatusName == str))

                            {
                                LocationStatus cs = new LocationStatus(uow)
                                {
                                    StatusName = str, StatusDescription = str
                                };
                                uow.CommitChanges();
                            }
                        }
                    }
                    return(true);
                });
                IAsyncResult statusres = del.BeginInvoke(statuses, null, null);
                await Task.FromResult(statusres);
            }//using odw
        }