Esempio n. 1
0
 public void Test_IsInhabitant()
 {
     Assert.AreEqual(true, ALCore.IsInhabitant(ItemType.Fish));
     Assert.AreEqual(true, ALCore.IsInhabitant(ItemType.Invertebrate));
     Assert.AreEqual(true, ALCore.IsInhabitant(ItemType.Plant));
     Assert.AreEqual(true, ALCore.IsInhabitant(ItemType.Coral));
 }
Esempio n. 2
0
 public void Test_GetItemType_ST()
 {
     Assert.AreEqual(ItemType.Fish, ALCore.GetItemType(SpeciesType.Fish));
     Assert.AreEqual(ItemType.Invertebrate, ALCore.GetItemType(SpeciesType.Invertebrate));
     Assert.AreEqual(ItemType.Plant, ALCore.GetItemType(SpeciesType.Plant));
     Assert.AreEqual(ItemType.Coral, ALCore.GetItemType(SpeciesType.Coral));
 }
Esempio n. 3
0
 public void Test_IsAnimal()
 {
     Assert.AreEqual(true, ALCore.IsAnimal(SpeciesType.Fish));
     Assert.AreEqual(true, ALCore.IsAnimal(SpeciesType.Invertebrate));
     Assert.AreEqual(false, ALCore.IsAnimal(SpeciesType.Plant));
     Assert.AreEqual(false, ALCore.IsAnimal(SpeciesType.Coral));
 }
Esempio n. 4
0
        public WorkTime GetWorkTime(Aquarium aquarium)
        {
            int aquariumId = aquarium.Id;
            IList <Maintenance> maintenances = fDB.Query <Maintenance>("select * from Maintenance where (AquariumId = ? and Type between 8 and 9) order by [Timestamp] desc", aquariumId);

            DateTime startDate = ALCore.ZeroDate;
            DateTime stopDate  = ALCore.ZeroDate;

            foreach (var mtn in maintenances)
            {
                if (mtn.Type == MaintenanceType.AquariumStopped && ALCore.IsZeroDate(stopDate))
                {
                    stopDate = mtn.Timestamp;
                }

                if (mtn.Type == MaintenanceType.AquariumStarted && ALCore.IsZeroDate(startDate))
                {
                    startDate = mtn.Timestamp;
                    break;
                }
            }

            return(new WorkTime(startDate, stopDate));
            //return new WorkTime(aquarium.StartDate, aquarium.StopDate);
        }
Esempio n. 5
0
 public static string GetRangeStr(double min, double max)
 {
     if (double.IsNaN(min) && double.IsNaN(max))
     {
         return(string.Empty);
     }
     return(ALCore.GetDecimalStr(min) + " - " + ALCore.GetDecimalStr(max));
 }
Esempio n. 6
0
 public void Test_IsLifesupport()
 {
     Assert.AreEqual(true, ALCore.IsLifesupport(ItemType.Nutrition));
     Assert.AreEqual(true, ALCore.IsLifesupport(ItemType.Device));
     Assert.AreEqual(true, ALCore.IsLifesupport(ItemType.Additive));
     Assert.AreEqual(true, ALCore.IsLifesupport(ItemType.Chemistry));
     Assert.AreEqual(false, ALCore.IsLifesupport(ItemType.Equipment));
 }
Esempio n. 7
0
 public void Test_GetItemType_IT()
 {
     Assert.AreEqual(ItemType.Additive, ALCore.GetItemType(InventoryType.Additive));
     Assert.AreEqual(ItemType.Chemistry, ALCore.GetItemType(InventoryType.Chemistry));
     Assert.AreEqual(ItemType.Equipment, ALCore.GetItemType(InventoryType.Equipment));
     Assert.AreEqual(ItemType.Maintenance, ALCore.GetItemType(InventoryType.Maintenance));
     Assert.AreEqual(ItemType.Furniture, ALCore.GetItemType(InventoryType.Furniture));
     Assert.AreEqual(ItemType.Decoration, ALCore.GetItemType(InventoryType.Decoration));
 }
Esempio n. 8
0
        public string GetEntityName(Entity entity)
        {
            string result = string.Empty;

            switch (entity.EntityType)
            {
            case EntityType.Aquarium:
            case EntityType.Inhabitant:
            case EntityType.Species:
            case EntityType.Nutrition:
            case EntityType.Device:
            case EntityType.Inventory:
            case EntityType.Note:
            case EntityType.Schedule:
            case EntityType.Snapshot:
            case EntityType.Brand:
            case EntityType.Shop:
            case EntityType.TSPoint:
                result = entity.ToString();
                break;

            case EntityType.Maintenance:
            {
                var    mntRec    = entity as Maintenance;
                string strType   = Localizer.LS(ALData.MaintenanceTypes[(int)mntRec.Type].Name);
                string timestamp = ALCore.GetDateStr(mntRec.Timestamp);
                result = strType + " [" + timestamp + "]";
            }
            break;

            case EntityType.Measure:
            {
                var    msrRec    = entity as Measure;
                string strType   = Localizer.LS(LSID.Measure);
                string timestamp = ALCore.GetDateStr(msrRec.Timestamp);
                result = strType + " [" + timestamp + "]";
            }
            break;

            case EntityType.Transfer:
            {
                var    trnRec    = entity as Transfer;
                var    itemRec   = GetRecord(trnRec.ItemType, trnRec.ItemId);
                string itName    = (itemRec == null) ? string.Empty : itemRec.ToString();
                string strType   = Localizer.LS(ALData.TransferTypes[(int)trnRec.Type]);
                string timestamp = ALCore.GetDateStr(trnRec.Timestamp);
                result = strType + " [" + timestamp + ", " + itName + "]";
            }
            break;

            default:
                result = entity.ToString();
                break;
            }

            return(result);
        }
Esempio n. 9
0
        /// <summary>
        /// Cleaning waste space
        /// </summary>
        public void CleanSpace()
        {
            var transfers = QueryTransfers();

            foreach (Transfer rec in transfers)
            {
                var itemRec = GetRecord(rec.ItemType, rec.ItemId);

                bool     valid        = true;
                ItemType sourItemType = ItemType.None;
                switch (itemRec.EntityType)
                {
                case EntityType.Aquarium:
                case EntityType.Species:
                case EntityType.Nutrition:
                case EntityType.Device:
                case EntityType.Maintenance:
                case EntityType.Measure:
                case EntityType.Note:
                case EntityType.Schedule:
                case EntityType.Transfer:
                case EntityType.Snapshot:
                case EntityType.Brand:
                case EntityType.Shop:
                case EntityType.TSPoint:
                    break;

                case EntityType.Inhabitant:
                    var inhab   = itemRec as Inhabitant;
                    var species = GetRecord <Species>(inhab.SpeciesId);
                    sourItemType = ALCore.GetItemType(species.Type);
                    valid        = rec.ItemType == sourItemType;
                    break;

                case EntityType.Inventory:
                    var invent = itemRec as Inventory;
                    sourItemType = ALCore.GetItemType(invent.Type);
                    valid        = rec.ItemType == sourItemType;
                    break;
                }

                if (!valid)
                {
                    string str = string.Format("itemId={0}, itemType={1}, sourItemType={2}", rec.ItemId, rec.ItemType, sourItemType);
                    System.Diagnostics.Debug.WriteLine(str);
                }
            }

            fDB.Execute("drop table if exists Expense");
            fDB.Execute("VACUUM;");
        }
Esempio n. 10
0
        private void PrepareValue(IList <MeasureValue> measures, double mVal, string sign, string uom, ValueRange[] ranges)
        {
            string strVal = !double.IsNaN(mVal) ? ALCore.GetDecimalStr(mVal) : string.Empty;
            string text   = string.Format("{0}={1} {2}", sign, strVal, uom);

            Color      color  = Color.Black;
            ValueRange bounds = CheckValue(mVal, ranges);

            if (bounds != null)
            {
                color = bounds.Color;
            }

            var tval = new MeasureValue(sign, mVal, uom, strVal, text, color, ranges);

            measures.Add(tval);
        }
Esempio n. 11
0
        public string GetItemStateStr(int recId, ItemType itemType, out ItemState itemState)
        {
            DateTime exclusionDate;

            GetItemState(recId, itemType, out itemState, out exclusionDate);
            string strState;

            if (itemState == ItemState.Unknown)
            {
                strState = string.Empty;
            }
            else
            {
                string strExclusDate = ALCore.IsZeroDate(exclusionDate) ? "-" : ALCore.GetDateStr(exclusionDate);
                strState = string.Format("{0} [{1}]", Localizer.LS(ALData.ItemStates[(int)itemState]), strExclusDate);
            }
            return(strState);
        }
Esempio n. 12
0
        public void GetInhabitantDates(int recId, ItemType itemType, out DateTime inclusionDate, out DateTime exclusionDate, out int currAqmId)
        {
            currAqmId     = -1;
            inclusionDate = ALCore.ZeroDate;
            exclusionDate = ALCore.ZeroDate;

            IList <Transfer> transfers = QueryTransfers(recId, (int)itemType);
            int count = 0;

            foreach (var trf in transfers)
            {
                switch (trf.Type)
                {
                case TransferType.Relocation:
                    break;

                case TransferType.Purchase:
                case TransferType.Birth:
                    count += (int)trf.Quantity;
                    if (ALCore.IsZeroDate(inclusionDate))
                    {
                        inclusionDate = trf.Timestamp;
                    }
                    break;

                case TransferType.Sale:
                case TransferType.Death:
                    count -= (int)trf.Quantity;
                    if (count == 0)
                    {
                        exclusionDate = trf.Timestamp;
                    }
                    break;
                }

                if (trf.TargetId > 0)
                {
                    currAqmId = trf.TargetId;
                }
            }
        }
Esempio n. 13
0
        public void GetWaterChangeIntervals(int aquariumId, WorkTime workTime, out double avgChangeDays, out double lastChangeDays)
        {
            double changesDays  = 0.0d;
            int    changesCount = 0;

            DateTime dtPrev  = ALCore.ZeroDate;
            var      records = fDB.Query <Maintenance>("select * from Maintenance where ((AquariumId = ?) and (Type between 0 and 3) and (Timestamp >= ?)) order by [Timestamp]", aquariumId, workTime.Start);

            foreach (Maintenance rec in records)
            {
                if (!ALCore.IsZeroDate(dtPrev))
                {
                    int days = (rec.Timestamp.Date - dtPrev).Days;
                    changesDays  += days;
                    changesCount += 1;
                }
                dtPrev = rec.Timestamp.Date;
            }

            avgChangeDays  = changesDays / changesCount;
            lastChangeDays = (DateTime.Now.Date - dtPrev).Days;
        }
Esempio n. 14
0
        public void GetItemState(int recId, ItemType itemType, out ItemState itemState, out DateTime exclusionDate)
        {
            itemState     = ItemState.Unknown;
            exclusionDate = ALCore.ZeroDate;

            IList <Transfer> transfers = QueryTransfers(recId, (int)itemType);

            foreach (var trf in transfers)
            {
                switch (trf.Type)
                {
                case TransferType.Death:
                    if (ALCore.IsZeroDate(exclusionDate))
                    {
                        itemState     = ItemState.Dead;
                        exclusionDate = trf.Timestamp;
                    }
                    break;

                case TransferType.Sale:
                    if (ALCore.IsZeroDate(exclusionDate))
                    {
                        itemState     = ItemState.Sold;
                        exclusionDate = trf.Timestamp;
                    }
                    break;

                case TransferType.Exclusion:
                    if (ALCore.IsZeroDate(exclusionDate))
                    {
                        itemState     = ALData.ItemTypes[(int)itemType].ExclusionState;
                        exclusionDate = trf.Timestamp;
                    }
                    break;
                }
            }
        }
Esempio n. 15
0
        public static string CastStr(double value, MeasurementType measurementType, int decimalDigits = 2, bool hideZero = false)
        {
            // sourceUoM = always only SI
            MeasurementUnit targetUnit = MeasurementUnit.Unknown;

            switch (measurementType)
            {
            case MeasurementType.Length:
                targetUnit = ALSettings.Instance.LengthUoM;
                break;

            case MeasurementType.Volume:
                targetUnit = ALSettings.Instance.VolumeUoM;
                break;

            case MeasurementType.Mass:
                targetUnit = ALSettings.Instance.MassUoM;
                break;

            case MeasurementType.Temperature:
                targetUnit = ALSettings.Instance.TemperatureUoM;
                break;
            }

            switch (targetUnit)
            {
            case MeasurementUnit.Centimeter:
                break;

            case MeasurementUnit.Inch:
                value = UnitConverter.cm2inch(value);
                break;

            case MeasurementUnit.Litre:
                break;

            case MeasurementUnit.UKGallon:
                break;

            case MeasurementUnit.USGallon:
                value = UnitConverter.l2gal(value);
                break;

            case MeasurementUnit.Kilogram:
                break;

            case MeasurementUnit.Pound:
                value = UnitConverter.kg2lb(value);
                break;

            case MeasurementUnit.DegreeCelsius:
                break;

            case MeasurementUnit.DegreeFahrenheit:
                value = UnitConverter.C2F(value);
                break;

            case MeasurementUnit.DegreeKelvin:
                value = UnitConverter.C2K(value);
                break;

            case MeasurementUnit.Unknown:
            default:
                break;
            }

            return(ALCore.GetDecimalStr(value, decimalDigits, hideZero));
        }
Esempio n. 16
0
        public bool CheckConstraints(Entity entity)
        {
            // any links?
            bool result = false;

            switch (entity.EntityType)
            {
            case EntityType.Aquarium:
            {
                var      aqmRec   = entity as Aquarium;
                ItemType itemType = ItemType.Aquarium;
                result = HasTransfers(fDB, entity.Id, itemType) || HasAquariumLinks(fDB, entity.Id) || HasAquariumSTT(fDB, entity.Id);
            }
            break;

            case EntityType.Inhabitant:
            {
                var         inhRec      = entity as Inhabitant;
                SpeciesType speciesType = GetSpeciesType(inhRec.SpeciesId);
                ItemType    itemType    = ALCore.GetItemType(speciesType);
                result = HasTransfers(fDB, entity.Id, itemType) || HasSnapshots(fDB, entity.Id, itemType);
            }
            break;

            case EntityType.Species:
            {
                var    spcRec = entity as Species;
                string query  = string.Format("select count(*) as value from Inhabitant where SpeciesId = {0}", entity.Id);
                result = HasCount(fDB, query);
            }
            break;

            case EntityType.Nutrition:
            {
                var      nutrRec  = entity as Nutrition;
                ItemType itemType = ItemType.Nutrition;
                result = HasTransfers(fDB, entity.Id, itemType);
            }
            break;

            case EntityType.Device:
            {
                var      devRec   = entity as Device;
                ItemType itemType = ItemType.Device;
                result = HasTransfers(fDB, entity.Id, itemType);
            }
            break;

            case EntityType.Inventory:
            {
                // for Soils in the future - links from aquarium records
                var      invRec   = entity as Inventory;
                ItemType itemType = ALCore.GetItemType(invRec.Type);
                result = HasTransfers(fDB, entity.Id, itemType);
            }
            break;

            case EntityType.Maintenance:
            case EntityType.Measure:
            case EntityType.Note:
            case EntityType.Schedule:
            case EntityType.Transfer:
            case EntityType.Snapshot:
                // default, no external links
                break;

            case EntityType.Brand:
            case EntityType.Shop:
                // default, because it is not used as a reference table
                break;

            case EntityType.TSPoint:
            {
                var    tspRec = entity as TSPoint;
                string query  = string.Format("select count(*) as value from Device where PointId = {0}", entity.Id);
                result = HasCount(fDB, query);
            }
            break;
            }

            return(result);
        }