/// <summary> ///Inserts two foreign key refernces into a mapping table /// </summary> public virtual void InsertManyToMany <T>(IDwarf obj1, IDwarf obj2, string alternateTableName = null) { if (!obj1.IsSaved) { obj1.Save(); } if (!obj2.IsSaved) { obj2.Save(); } var type1 = obj1.GetType(); var type2 = obj2.GetType(); var tableName = ManyToManyAttribute.GetManyToManyTableName(type1, type2, alternateTableName); DbContextHelper <T> .ClearCacheForType(type1); DbContextHelper <T> .ClearCacheForType(type2); var preReq = string.Format("IF NOT EXISTS (SELECT * FROM [{0}] WHERE {1}Id = {2} AND {3}Id = {4}) \r\n", tableName, type1.Name, ValueToSqlString(obj1.Id), type2.Name, ValueToSqlString(obj2.Id)); var query = new QueryBuilder <T>() .InsertInto(tableName) .Values(type1.Name + "Id", obj1.Id) .Values(type2.Name + "Id", obj2.Id) .ToQuery(); ExecuteNonQuery <T>(preReq + query); }
public string CraftPresent(string presentName) { IPresent present = presentRepository.FindByName(presentName); var dwarfsReady = dwarfRepository.Models.OrderByDescending(x => x.Energy).Where(x => x.Energy >= 50).ToList(); var workShop = new Workshop(); if (!dwarfsReady.Any()) { throw new InvalidOperationException(ExceptionMessages.DwarfsNotReady); } while (dwarfsReady.Any()) { IDwarf currentDwarf = dwarfsReady.First(); workShop.Craft(present, currentDwarf); dwarfsReady.Remove(currentDwarf); } if (present.IsDone()) { return(string.Format(OutputMessages.PresentIsDone, present.Name)); } else { return(string.Format(OutputMessages.PresentIsNotDone, present.Name)); } }
public void Craft(IPresent present, IDwarf dwarf) { while (dwarf.Energy > 0 && dwarf.Instruments.Any()) // итерираме между инструментите { IInstrument currInstrument = dwarf.Instruments.First(); while (!present.IsDone() && dwarf.Energy > 0 && !currInstrument.IsBroken()) // правим подаръка { dwarf.Work(); // намаляме енергията present.GetCrafted(); // намаляме необходимото за правенето на подаръка currInstrument.Use(); // намаляме здравето на инструмента } if (currInstrument.IsBroken()) //ако заедно с направата на подарък се е счупил и инструмента !!!! { dwarf.Instruments.Remove(currInstrument); } if (present.IsDone()) //подаръка е готов и излизаме { break; } } }
public void Craft(IPresent present, IDwarf dwarf) { while (dwarf.Energy > DwarfMinEnergy && dwarf.Instruments.Any()) { var currentInstrument = dwarf.Instruments.First(); while (!present.IsDone() && dwarf.Energy > DwarfMinEnergy && !currentInstrument.IsBroken()) { dwarf.Work(); present.GetCrafted(); currentInstrument.Use(); } if (currentInstrument.IsBroken()) { dwarf.Instruments.Remove(currentInstrument); } if (present.IsDone()) { break; } } }
public void Craft(IPresent present, IDwarf dwarf) { while (!present.IsDone() || dwarf.Energy > 0) { foreach (var instrument in dwarf.Instruments) { if (!instrument.IsBroken()) { instrument.Use(); present.GetCrafted(); if (instrument.Power <= 0) { instrument.IsBroken(); } if (present.IsDone()) { break; } else { instrument.Use(); present.GetCrafted(); } } } } }
public void Craft(IPresent present, IDwarf dwarf) { var instruments = dwarf.Instruments.ToList(); while (true) { if (dwarf.Energy <= 0 || present.IsDone()) { break; } if (instruments[0].IsBroken()) { dwarf.Instruments.Remove(instruments[0]); instruments.RemoveAt(0); if (instruments.Count > 0) { continue; } else { break; } } instruments[0].Use(); dwarf.Work(); present.GetCrafted(); } }
public void Craft(IPresent present, IDwarf dwarf) { IInstrument instrument = null; while (dwarf.Energy > 0 && dwarf.Instruments.Any(x => x.Power > 0)) { instrument = dwarf.Instruments.FirstOrDefault(x => x.Power > 0); while (!present.IsDone() && dwarf.Energy > 0 && !instrument.IsBroken()) { dwarf.Work(); instrument.Use(); present.GetCrafted(); } if (instrument.IsBroken()) { dwarf.Instruments.Remove(instrument); } if (present.IsDone()) { break; } } }
public void Craft(IPresent present, IDwarf dwarf) { while (!present.IsDone() && dwarf.Instruments.Any(x => !x.IsBroken())) { present.GetCrafted(); dwarf.Instruments.FirstOrDefault(x => x.IsBroken() == false).Use(); } }
public string CraftPresent(string presentName) { Workshop workshop = new Workshop(); IPresent present = this.presents.FindByName(presentName); // намираме подаръка ICollection <IDwarf> dwarves = this.dwarfs.Models.Where(dw => dw.Energy >= 50).OrderByDescending(dw => dw.Energy).ToList(); // намираме тези дуорфи, които имат енергия над 50 и ги подреждаме по нея if (!dwarves.Any()) // ако е празна колекцията { throw new InvalidOperationException(ExceptionMessages.DwarfsNotReady); } while (dwarves.Any()) { IDwarf currDwarf = dwarves.First(); workshop.Craft(present, currDwarf); if (!currDwarf.Instruments.Any()) // ако му свършат инструментите { dwarves.Remove(currDwarf); //махаме го само от локалната колекция !!! } if (currDwarf.Energy == 0) //ако му свърши енергията { dwarves.Remove(currDwarf); this.dwarfs.Remove(currDwarf); // премахваме го от двете колекции } if (present.IsDone()) { break; } } //string result; //if (present.IsDone()) //{ // result = string.Format(OutputMessages.PresentIsDone, presentName); //} //else //{ // result = string.Format(OutputMessages.PresentIsNotDone, presentName); //} //return result; string result = string.Format(present.IsDone() ? OutputMessages.PresentIsDone : OutputMessages.PresentIsNotDone, presentName); return(result); }
public void Craft(IPresent present, IDwarf dwarf) { while (dwarf.Energy > 0 && dwarf.Instruments.Sum(el => el.Power) > 0 && !present.IsDone()) { dwarf.Work(); dwarf.Instruments.First(el => !el.IsBroken()).Use(); present.GetCrafted(); } }
public void Craft(IPresent present, IDwarf dwarf) { while (dwarf.Energy >= 0 && dwarf.Instruments.Any(x => x.IsBroken() == false) && (present.IsDone() == false)) { var instrument = dwarf.Instruments.First(x => x.IsBroken() == false); instrument.Use(); dwarf.Work(); present.GetCrafted(); } }
public string AddInstrumentToDwarf(string dwarfName, int power) { dwarf = dwarfs.FindByName(dwarfName); instrument = new Instrument(power); if (dwarf == null) { throw new InvalidOperationException(ExceptionMessages.InexistentDwarf); } dwarf.AddInstrument(instrument); return(string.Format(OutputMessages.InstrumentAdded, power, dwarfName)); }
public string AddDwarf(string dwarfType, string dwarfName) { IDwarf dwarf = this.dwarfFactory.Create(dwarfType, dwarfName); this.dwarfRepository.Add(dwarf); return(string.Format( OutputMessages.DwarfAdded, dwarfType, dwarfName)); }
/// <summary> /// Returns true if the object contains faulty Foreign Key values /// </summary> private static IEnumerable <string> FaultyForeignKeys(IDwarf obj) { foreach (var pi in Cfg.FKProperties[DwarfHelper.DeProxyfy(obj)]) { var att = DwarfPropertyAttribute.GetAttribute(pi.ContainedProperty); if (!att.IsNullable && (pi.GetValue(obj) == null || !((IDwarf)pi.GetValue(obj)).IsSaved)) { yield return(pi.Name); } } }
public void Craft(IPresent present, IDwarf dwarf) { while (true) { dwarf.Work(); present.GetCrafted(); if (present.IsDone) { break; } } }
/// <summary> /// Returns all AuditLog events for the supplied object /// </summary> public static List <AuditLog> GetAllEvents <T>(IDwarf obj) { return(DwarfContext <T> .GetDatabase().SelectReferencing <T, AuditLog> ( new WhereCondition <AuditLog> { Column = x => x.ClassType, Value = obj.GetType().Name }, new WhereCondition <AuditLog> { Column = x => x.ObjectId, Value = obj.Id } )); }
//The dwarf starts crafting the present.This is only possible, //if the dwarf has energy and an instrument that isn't broken. //At the same time the present is getting crafted, so call the GetCrafted() method for the present. //Keep working until the present is done or the dwarf has energy and instruments to use. //If at some point the power of the current instrument reaches or drops below 0, //meaning it is broken, then the dwarf should take the next instrument from its collection, if it has any left. public void Craft(IPresent present, IDwarf dwarf) { if (dwarf.Energy > 0 && dwarf.Instruments.Any(i => i.Power > 0)) { while ((dwarf.Energy > 0 && dwarf.Instruments.Any(i => i.Power > 0)) || !present.IsDone()) { dwarf.Work(); present.GetCrafted(); } } }
public string AddInstrumentToDwarf(string dwarfName, int power) { IDwarf dwarf = this.dwarfRepository.FindByName(dwarfName); if (dwarf == null) { throw new InvalidOperationException(ExceptionMessages.InexistentDwarf); } dwarf.AddInstrument(new Instrument(power)); return(string.Format(OutputMessages.InstrumentAdded, power, dwarfName)); }
public string AddInstrumentToDwarf(string dwarfName, int power) { IDwarf dwarf = this.dwarfs.FindByName(dwarfName); if (dwarf == null) { throw new InvalidOperationException("The dwarf you want to add an instrument to doesn't exist!"); } IInstrument instrument = new Instrument(power); dwarf.AddInstrument(instrument); return($"Successfully added instrument with power {instrument.Power} to dwarf {dwarf.Name}!"); }
public string AddInstrumentToDwarf(string dwarfName, int power) { IDwarf wantedDwarf = this.dwarfs.Models.FirstOrDefault(d => d.Name == dwarfName); if (wantedDwarf == null) { throw new InvalidOperationException(ExceptionMessages.InexistentDwarf); } IInstrument instrument = new Instrument(power); wantedDwarf.AddInstrument(instrument); return(String.Format(OutputMessages.InstrumentAdded, power, dwarfName)); }
/// <summary> ///Inserts two foreign key refernces into a mapping tables /// </summary> public virtual List <T> SelectManyToMany <T>(IDwarf owner, string alternateTableName = null) where T : Dwarf <T>, new() { if (owner == null || !owner.IsSaved) { return(new List <T>()); } var targetType = typeof(T); var ownerType = owner.GetType(); var tableName = ManyToManyAttribute.GetManyToManyTableName(targetType, ownerType, alternateTableName); var command = new QueryBuilderLight().Select <T>() .From <T>() .InnerJoin("[" + tableName + "] ON [" + tableName + "].[" + targetType.Name + "Id] = [" + targetType.Name + "].[Id]") .Where("[" + tableName + "].[" + ownerType.Name + "Id]", owner.Id, ownerType).ToQuery(); if (!typeof(T).Implements <ICacheless>()) { var cache = CacheManager.GetCacheList <T>(command); if (cache != null) { return(cache); } } var sdr = ExecuteReader <T>(command); var result = new List <T>(); try { while (sdr.Read()) { result.Add(TupleToObject <T>(sdr)); } } catch (Exception e) { DwarfContext <T> .GetConfiguration().ErrorLogService.Logg(e); throw new DatabaseOperationException(e.Message, e); } finally { sdr.Close(); } return(typeof(T).Implements <ICacheless>() ? result : CacheManager.SetCacheList(command, result)); }
public string AddInstrumentToDwarf(string dwarfName, int power) { IInstrument instrument = new Instrument(power); IDwarf dwarf = this.dwarfs.FindByName(dwarfName); if (dwarf == null) { throw new InvalidOperationException(ExceptionMessages.InexistentDwarf); } dwarf.AddInstrument(instrument); return($"Successfully added instrument with power {power} to dwarf {dwarfName}!"); }
private int GetCount(IDwarf item) { var counter = 0; foreach (var inst in item.Instruments) { if (!inst.IsBroken()) { counter++; } } return(counter); }
public string CraftPresent(string presentName) { var present = this.presents.FindByName(presentName); IDwarf dwarf = this.dwarfs.Models.FirstOrDefault(d => d.Energy >= 50 && d.Instruments.Any(i => !i.IsBroken())); if (this.dwarfs.Models.Any(d => d.Instruments.Any(i => i.Power > 0))) { foreach (var instrument in this.dwarfs.Models) { var instCount = this.GetCount(instrument); if (instrument.Energy >= dwarf.Energy && instCount > this.GetCount(dwarf)) { dwarf = instrument; } } } else { dwarf = this.dwarfs.Models.FirstOrDefault(d => d.Energy >= 50 && d.Instruments.Any(i => !i.IsBroken())); } if (dwarf is null) { throw new InvalidOperationException(ExceptionMessages.DwarfsNotReady); } if (!present.IsDone()) { this.workshop.Craft(present, dwarf); } if (dwarf.Energy == 0) { this.dwarfs.Remove(dwarf); } var masage = present.IsDone() == true ? "done" : "not done"; if (masage == "done") { return(string.Format(OutputMessages.PresentIsDone, presentName)); } else { return(string.Format(OutputMessages.PresentIsNotDone, presentName)); } }
private IDwarf CreateDwarfByType(string dwarfType, string dwarfName) { IDwarf dwarf = null; if (dwarfType == "HappyDwarf") { dwarf = new HappyDwarf(dwarfName); } else { dwarf = new SleepyDwarf(dwarfName); } return(dwarf); }
public string AddDwarf(string dwarfType, string dwarfName) { IDwarf dwarf = null; switch (dwarfType) { case "HappyDwarf": dwarf = new HappyDwarf(dwarfName); break; case "SleepyDwarf": dwarf = new SleepyDwarf(dwarfName); break; default: throw new InvalidOperationException(ExceptionMessages.InvalidDwarfType); } this.dwarfs.Add(dwarf); return(string.Format(OutputMessages.DwarfAdded, dwarfType, dwarfName)); }
public void Craft(IPresent present, IDwarf dwarf) { while (dwarf.Energy > 0 || !present.IsDone() || dwarf.Instruments.Any(x => !x.IsBroken())) { foreach (var instrument in dwarf.Instruments) { while (!instrument.IsBroken()) { instrument.Use(); dwarf.Work(); present.GetCrafted(); } } } }
public string CraftPresent(string presentName) { IPresent present = this.presents.FindByName(presentName); IDwarf dwarf = dwarves.Models .Where(d => d.Energy >= 50) .OrderByDescending(d => d.Energy) .FirstOrDefault(d => d.Instruments.Count > 0); Workshop workshop = new Workshop(); while (dwarves.Models.Any(d => d.Energy >= 50)) { if (dwarf == null) { throw new InvalidOperationException(ExceptionMessages.DwarfsNotReady); } workshop.Craft(present, dwarf); if (dwarf.Energy == 0) { this.dwarves.Remove(dwarf); } if (present.IsDone()) { break; } if (!dwarf.Instruments.Any(i => i.Power > 0)) { break; } } string result; if (present.IsDone()) { result = string.Format(OutputMessages.PresentIsDone, presentName); } else { result = string.Format(OutputMessages.PresentIsNotDone, presentName); } return(result); }
public void Craft(IPresent present, IDwarf dwarf) { if (dwarf.Energy > 0 && dwarf.Instruments.Any(i => i.IsBroken() == false)) { while (true) { if (present.IsDone() || dwarf.Energy <= 0 || dwarf.Instruments.All(i => i.IsBroken())) { break; } present.GetCrafted(); dwarf.Work(); } } }
public void Craft(IPresent present, IDwarf dwarf) { var instrument = dwarf.Instruments.FirstOrDefault(x => x.IsBroken() == false); while (present.IsDone() == false && dwarf.Energy > 0 && instrument != null) { present.GetCrafted(); instrument.Use(); dwarf.Work(); if (instrument.IsBroken()) { instrument = dwarf.Instruments.FirstOrDefault(x => x.IsBroken() == false); } } }