Beispiel #1
0
        private Heat ImportHeat(HeatObject heatObj)
        {
            if (heatObj == null)
            {
                return(null);
            }

            bool isNew = false;
            Heat heat  = importRepo.HeatRepo.Get(heatObj.Id);

            if (heat == null)
            {
                heat  = new Heat();
                isNew = true;
            }

            heat.Id                = heatObj.Id;
            heat.IsActive          = heatObj.IsActive;
            heat.Number            = heatObj.Number;
            heat.SteelGrade        = heatObj.SteelGrade;
            heat.PlateManufacturer = ImportPlateManifacturer(heatObj.PlateManufacturer);

            if (isNew)
            {
                importRepo.HeatRepo.Save(heat);
            }
            else
            {
                importRepo.HeatRepo.SaveOrUpdate(heat);
            }

            return(heat);
        }
Beispiel #2
0
 void AssertHeat(HeatObject obj)
 {
     Assert.AreEqual(id, obj.Id);
     Assert.AreEqual(NUMBER, obj.Number);
     Assert.AreEqual(STEEL_GRADE, obj.SteelGrade);
     Assert.IsTrue(obj.IsActive);
 }
 void OnTriggerExit2D(Collider2D col)
 {
     heatObjectScr = col.GetComponent <HeatObject>();
     if (col.gameObject.layer == 13 && can_interact_with_ore && heatObjectScr != null)
     {
         heatObjectScr.Stop_Heat();
     }
 }
        ///<summary>
        /// Реализация первого алгоритма:
        /// 1 символ - код данного алгоритма (S)
        /// Далее дата в формате ddmmyy без разделителей и только с 2 последними цифрами года
        /// Далее наименование объекта целиком, если влезает в 18 символов
        /// Далее разделитель "-"
        /// Далее часть или полностью номер лицевого счета
        /// </summary>
        /// <remarks>
        /// Предполагается, что наименование объекта:
        /// - не слишком длинное
        /// - это строка
        /// И в целом по дате, имени и части счета можно будет узнать объект
        /// Также предполагается, что номер счета влезает в long и не является отрицательным
        /// </remarks>
        /// <param name="heatObject">Информация об объекте теплопотребления. См. больше в проекте HeatingProject.Objects</param>
        /// <returns>Строка цифро-буквенного кода</returns>

        public static string GetSimpleCode(HeatObject heatObject)
        {
            checkStr(heatObject.objName, "Наименование объекта", "Наименование объекта не может быть пусто");

            var dateStr    = $"{heatObject.registryDate:dd}{heatObject.registryDate:MM}{heatObject.registryDate:yy}";
            var resultCode = $"S{dateStr}{heatObject.objName}-{heatObject.personalAccount}";

            resultCode = resultCode.Length > maxCountOfDigits?resultCode.Remove(maxCountOfDigits) : resultCode;

            return(resultCode);
        }
        public ActionResult GetCode(FormCollection codeCollection)
        {
            DateTime date;
            ulong    account;

            if (!DateTime.TryParse(ViewBag.RegDate = codeCollection["regDate"], out date))
            {
                ViewBag.Answer = "Неправильная дата";
                return(View());
            }

            if (!ulong.TryParse(ViewBag.PersAcc = codeCollection["persAcc"], out account))
            {
                ViewBag.Answer = "Счет должен быть целым числом!";
                return(View());
            }

            var heatObj = new HeatObject()
            {
                objName         = ViewBag.ObjName = codeCollection["objName"],
                personalAccount = account,
                registryDate    = date
            };

            try
            {
                switch (codeCollection["algoType"])
                {
                case "Simple":
                    ViewBag.Answer = HeatObjectCodeGenerator.GetSimpleCode(heatObj);
                    break;

                case "Hex":
                    ViewBag.Answer = HeatObjectCodeGenerator.GetHexCode(heatObj);
                    break;

                default:
                    ViewBag.Answer = "Ошибка!";
                    break;
                }
            }
            catch (Exception ex)
            {
                ViewBag.Answer = ex.Message;
            }

            return(View());
        }
        public void TestGetCode_CorrectDefaultDateAndInt()
        {
            //Arrange
            var heatObj = new HeatObject()
            {
                objName = "ОТ1"
            };
            var expectedCodeS = "S010101ОТ1-0";
            var expectedCodeH = "HОТ1-0-65";

            //Act
            var actualCodeS = HeatObjectCodeGenerator.GetSimpleCode(heatObj);
            var actualCodeH = HeatObjectCodeGenerator.GetHexCode(heatObj);

            //Assert
            Assert.Equal(expectedCodeS, actualCodeS);
            Assert.Equal(expectedCodeH, actualCodeH);
        }
        public void TestGetSimpleCode_IncorrectNameEmpty()
        {
            //Arrange
            var heatObj = new HeatObject()
            {
                objName         = String.Empty,
                personalAccount = 12345,
                registryDate    = new DateTime(2014, 3, 4)
            };

            //Act
            var actualExS = Assert.Throws <ArgumentNullException>(() => HeatObjectCodeGenerator.GetSimpleCode(heatObj));
            var actualExH = Assert.Throws <ArgumentNullException>(() => HeatObjectCodeGenerator.GetHexCode(heatObj));

            //Assert
            Assert.Contains("Наименование объекта не может быть пусто", actualExS.Message);
            Assert.Contains("Наименование объекта не может быть пусто", actualExH.Message);
        }
        /// <summary>
        /// Реализация второго алгоритма:
        /// 1 символ - код данного алгоритма (H)
        /// Далее наименование объекта (обрезано до 6 символов, если больше)
        /// Далее разделитель "-"
        /// Далее часть или полностью номер лицевого счета (обрезано до 6 символов)
        /// Далее разделитель "-"
        /// Далее дата в формате mmyy, переведенная в 16ричную систему счисления
        /// </summary>
        /// <remarks>
        /// При обратном переводе даты, если получается строка из 3 цифр - нужно добавить слева ноль
        /// </remarks>
        /// <param name="heatObject">Информация об объекте теплопотребления. См. больше в проекте HeatingProject.Objects</param>
        /// <returns>Строка цифро-буквенного кода</returns>

        public static string GetHexCode(HeatObject heatObject)
        {
            checkStr(heatObject.objName, "Наименование объекта", "Наименование объекта не может быть пусто");

            var dateNum = heatObject.registryDate.Month * 100 + short.Parse(heatObject.registryDate.ToString("yy"));
            var dateStr = dateNum.ToString("X");

            var nameStr = heatObject.objName.Length > maxNameHexLength
                ? heatObject.objName.Remove(maxNameHexLength)
                : heatObject.objName;

            var personalAccStr = heatObject.personalAccount.ToString();

            personalAccStr = personalAccStr.Length > maxNameHexLength
                ? personalAccStr.Remove(maxNameHexLength)
                : personalAccStr;

            return($"H{nameStr}-{personalAccStr}-{dateStr}");
        }
        public void TestGetSimpleCode_CorrectLongName()
        {
            //Arrange
            var heatObj = new HeatObject()
            {
                objName         = "ThisIsLongObjectName",
                personalAccount = 590,
                registryDate    = new DateTime(2019, 01, 31)
            };
            var expectedCodeS = "S310119ThisIsLongO";
            var expectedCodeH = "HThisIs-590-77";

            //Act
            var actualCodeS = HeatObjectCodeGenerator.GetSimpleCode(heatObj);
            var actualCodeH = HeatObjectCodeGenerator.GetHexCode(heatObj);

            //Assert
            Assert.Equal(expectedCodeS, actualCodeS);
            Assert.Equal(expectedCodeH, actualCodeH);
        }
        public void TestGetCode_CorrectSimple()
        {
            //Arrange
            var heatObj = new HeatObject()
            {
                objName         = "ОТ123",
                personalAccount = 156,
                registryDate    = new DateTime(2019, 10, 1)
            };
            var expectedCodeS = "S011019ОТ123-156";
            var expectedCodeH = "HОТ123-156-3FB";

            //Act
            var actualCode  = HeatObjectCodeGenerator.GetSimpleCode(heatObj);
            var actualCode2 = HeatObjectCodeGenerator.GetHexCode(heatObj);

            //Assert
            Assert.Equal(expectedCodeS, actualCode);
            Assert.Equal(expectedCodeH, actualCode2);
        }
        public void TestGetSimpleCode_CorrectMaxDate()
        {
            //Arrange
            var heatObj = new HeatObject()
            {
                objName         = "HO09",
                personalAccount = 45,
                registryDate    = DateTime.MaxValue
            };

            var expectedCodeS = "S311299HO09-45";
            var expectedCodeH = "HHO09-45-513";

            //Act
            var actualCodeS = HeatObjectCodeGenerator.GetSimpleCode(heatObj);
            var actualCodeH = HeatObjectCodeGenerator.GetHexCode(heatObj);

            //Assert
            Assert.Equal(expectedCodeS, actualCodeS);
            Assert.Equal(expectedCodeH, actualCodeH);
        }
        public void TestGetSimpleCode_CorrectLongBoth()
        {
            //Arrange
            var heatObj = new HeatObject()
            {
                objName         = "LooooooooooooooooooongName",
                personalAccount = ulong.MaxValue,
                registryDate    = new DateTime(2020, 01, 01)
            };
            string codeUlong = ulong.MaxValue.ToString();

            var expectedCodeS = "S010120Loooooooooo";
            var expectedCodeH = $"HLooooo-{codeUlong.Remove(HeatObjectCodeGenerator.maxNameHexLength)}-78";

            //Act
            var actualCodeS = HeatObjectCodeGenerator.GetSimpleCode(heatObj);
            var actualCodeH = HeatObjectCodeGenerator.GetHexCode(heatObj);

            //Assert
            Assert.Equal(expectedCodeS, actualCodeS);
            Assert.Equal(expectedCodeH, actualCodeH);
        }
        public void TestGetSimpleCode_CorrectLongAccount()
        {
            //Arrange
            var heatObj = new HeatObject()
            {
                objName         = "Obj34",
                personalAccount = ulong.MaxValue,
                registryDate    = new DateTime(2020, 01, 01)
            };
            string codeUlong = ulong.MaxValue.ToString();

            //MaxValue теоретически может меняться, поэтому пусть так
            var expectedCodeS = $"S010120Obj34-{codeUlong}".Remove(HeatObjectCodeGenerator.maxCountOfDigits);
            var expectedCodeH = $"HObj34-{codeUlong.Remove(HeatObjectCodeGenerator.maxNameHexLength)}-78";

            //Act
            var actualCodeS = HeatObjectCodeGenerator.GetSimpleCode(heatObj);
            var actualCodeH = HeatObjectCodeGenerator.GetHexCode(heatObj);

            //Assert
            Assert.Equal(expectedCodeS, actualCodeS);
            Assert.Equal(expectedCodeH, actualCodeH);
        }
        public ActionResult ParseCode(FormCollection codeCollection)
        {
            HeatObject heatObj = null;

            try
            {
                heatObj = HeatObjectCodeParser.ParseCode(ViewBag.Code = codeCollection["code"]);
            }
            catch (Exception ex)
            {
                ViewBag.AnswerText = ex.Message;
            }

            if (heatObj != null)
            {
                ViewBag.AnswerText = $"Наименование объекта: {heatObj.objName}\nДата регистрации: {heatObj.registryDate:dd.MM.yyyy}\nЛицевой счет: {heatObj.personalAccount}";
            }
            else
            {
                ViewBag.AnswerText = "Ошибка!";
            }

            return(View());
        }
Beispiel #15
0
        public void TestHeatObjectCasting()
        {
            HeatObject heat = SetupMock();

            AssertHeat(heat);
        }
Beispiel #16
0
        public void TestHeatObjectCopyConstructur()
        {
            HeatObject heat = new HeatObject(SetupMock());

            AssertHeat(heat);
        }