public void CheckFromReflection() { //Создаем велосипед, чтобы загрузилась сборка. var vel = new Велосипед(); var ass = AppDomain.CurrentDomain .GetAssemblies() .FirstOrDefault(x => x.FullName.Contains("Прокат_велосипедов_2.Objects")); if (ass == null) { Assert.Fail("Не загружается сборка"); } Assembly a = Assembly.Load(ass.FullName); var types = a.GetTypes().Where(x => x.BaseType == typeof(DataObject)).ToList(); var ds = TestHelper.DS; var sb = new StringBuilder(); foreach (var t in types) { object obj = Activator.CreateInstance(t); View v = new View(); v.DefineClassType = t; var lcs = LoadingCustomizationStruct.GetSimpleStruct(t, v); var notStoredAttribute = t.GetCustomAttribute(typeof(NotStoredAttribute)); try { var objects = ds.LoadObjects(lcs); if (notStoredAttribute != null) { //Успешно загрузли нехранимые объекты. sb.Append($"Класс {t} не должен храниться в БД {Environment.NewLine}"); } else { //Хранимые объекты загружены нормально. } } catch (Exception) { if (notStoredAttribute == null) { //Не загрузились хранимые объекты sb.Append($"Несоответствие в классе {t} {Environment.NewLine}"); } else { //Нехранимые объекты не загрузились. } } } if (sb.Length != 0) { Assert.Fail(sb.ToString()); } }
public void CheckAcessExistance() { //Создаем велосипед, чтобы загрузилась сборка. var vel = new Велосипед(); var ass = AppDomain.CurrentDomain .GetAssemblies() .FirstOrDefault(x => x.FullName.Contains("Прокат_велосипедов_2.Objects")); if (ass == null) { Assert.Fail("Не загружается сборка"); } Assembly a = Assembly.Load(ass.FullName); var types = a.GetTypes().Where(x => x.BaseType == typeof(DataObject)).ToList(); var ds = TestHelper.DS; var sb = new StringBuilder(); foreach (var t in types) { object obj = Activator.CreateInstance(t); View v = new View(); v.DefineClassType = t; var lcs = LoadingCustomizationStruct.GetSimpleStruct(t, v); var notStoredAttribute = t.GetCustomAttribute(typeof(NotStoredAttribute)); //Смотрим только хранимые объекты. if (notStoredAttribute == null) { string className = t.ToString(); int permCount = ds .Query <Permition>() .Count(x => x.Subject.IsClass && x.Agent.IsRole && x.Subject.Name == className); if (permCount == 0) { sb.Append($"На класс {className} отсутствуют какие-либо полномочия"); } } } if (sb.Length != 0) { Assert.Fail(sb.ToString()); } }
public IHttpActionResult Post([FromBody] VidatVelosiped obj) //(string startDate, string plannedDuration, string plannedPrice, // string startPoint, string vel, string klient, string employee) { StringBuilder errorMessageBuilder = new StringBuilder(); try { //Проверка входных парамтеров DateTime checkedStartDate = new DateTime(); if (!DateTime.TryParse(obj.startDate, out checkedStartDate)) { errorMessageBuilder.Append("Дата начала неправильная. "); } int checkedPlannedDuration = 0; if (!Int32.TryParse(obj.plannedDuration, out checkedPlannedDuration)) { errorMessageBuilder.Append("Планируемое время неправильное. "); } decimal checkedPlannedPrice = 0; if (!decimal.TryParse(obj.plannedPrice, out checkedPlannedPrice)) { errorMessageBuilder.Append("Планируемая стоимость неправильная. "); } Guid checkedStartPoint = new Guid(); if (!Guid.TryParse(obj.startPoint, out checkedStartPoint)) { errorMessageBuilder.Append("Точка выдачи неправильная. "); } Guid checkedVel = new Guid(); if (!Guid.TryParse(obj.vel, out checkedVel)) { errorMessageBuilder.Append("Велосипед неправильный. "); } Guid checkedKlient = new Guid(); if (!Guid.TryParse(obj.klient, out checkedKlient)) { errorMessageBuilder.Append("Клиент неправильный. "); } Guid checkedEmployee = new Guid(); if (!Guid.TryParse(obj.employee, out checkedEmployee)) { errorMessageBuilder.Append("Прокатчик неправильный. "); } if (errorMessageBuilder.Length != 0) { throw new Exception(errorMessageBuilder.ToString()); } //Заполнение объекта для сохранения. var storedObject = new IIS.Прокат_велосипедов_2.ПрокатВелосипеда { ДатаНачала = checkedStartDate, Велосипед = PKHelper.CreateDataObject <Велосипед>(checkedVel), ПлановаяСтоимость = checkedPlannedPrice, ПлановаяДлительность = checkedPlannedDuration, ТочкаВыдачи = PKHelper.CreateDataObject <ТочкаПроката>(checkedStartPoint), ТочкаСдачи = null, Прокатчик = PKHelper.CreateDataObject <Сотрудник>(checkedEmployee), Клиент = PKHelper.CreateDataObject <Клиент>(checkedKlient), ФактическаяДатаСдачи = null, ФактическаяСтоимость = 0 }; //Сохранение и прочее var ds = DataServiceProvider.DataService; ds.UpdateObject(storedObject); var loadedVel = new Велосипед { __PrimaryKey = checkedVel }; ds.LoadObject(loadedVel); string uLogin = ICSSoft.Services.CurrentUserService.CurrentUser.Login; LogService.LogInfo($"Пользователь {uLogin} совершил выдачу велосипеда {loadedVel.Номер.ToString()} "); return(Json <object>(new { result = "sucess" })); } catch (System.Exception e) { return(Json <object>(new { result = "error", errorMessage = e.Message })); } }