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); }
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()); }
public void TestHeatObjectCasting() { HeatObject heat = SetupMock(); AssertHeat(heat); }
public void TestHeatObjectCopyConstructur() { HeatObject heat = new HeatObject(SetupMock()); AssertHeat(heat); }