public bool GenerateFor(Order[] orders) { OrderToWorker[] bindings; var timeLogs = new List <TimeLog>(); orders = orders.Where(o => o.Status == OrderStatusEnum.Finished || o.Status == OrderStatusEnum.InProgress).ToArray(); long[] orderIds = orders.Select(o => o.Id).ToArray(); using (var dbAccess = new WorkshopManagerContext()) { bindings = dbAccess.OrderToWorkers .Where(b => orderIds.Contains(b.OrderId)).ToArray(); foreach (Order order in orders) { var orderBindings = bindings.Where(b => b.OrderId == order.Id).ToArray(); var mechanicianIds = orderBindings.Select(b => b.WorkerId).ToArray(); var quarters = GetAsOrderQuartersOfDay(order); var contributions = GenerateRandomContributions(quarters, mechanicianIds, order.Id); var timeLogsOfOrder = InstantiateTimeLogs(order, contributions); timeLogs.AddRange(timeLogsOfOrder); } dbAccess.BulkInsert <TimeLog>(timeLogs); } return(true); }
private AppUser PersistUser(WorkshopManagerContext db) { db.Users.Add(_user); string[] roleNames = Enum.GetValues(typeof(AppRoleEnum)) .Cast <string>() .Select(x => x.ToString()) .ToArray(); var roles = db.Roles.Where(r => roleNames.Contains(r.Name)).ToArray(); if (roles.Length == 0) { throw new Exception($"could not found any roles - verify AppRoleEnum values..."); } foreach (AppRole role in roles) { _user.Roles.Add(new AppUserToAppRole() { UserId = _user.Id, RoleId = role.Id }); } db.SaveChanges(); return(db.Users.SingleOrDefault(u => u.Username.Equals(_username))); }
private AppUser FindAppUser(string username) { using (var db = new WorkshopManagerContext()) { return(db.Users.SingleOrDefault(u => u.Username.Equals(username))); } }
public bool AssignRoles(AppUser user, AppRoleEnum[] roles, WorkshopManagerContext dbContext = null) { try { bool useOwnDbContext = dbContext == null; if (useOwnDbContext) { dbContext = new WorkshopManagerContext(); } if (_roles == null) { LoadRoles(dbContext); } string[] roleNames = roles.Select(r => r.ToString()).ToArray(); var foundAppRoles = _roles .Where(r => roleNames.Contains(r.Name)) .ToArray(); if (roleNames.Length != foundAppRoles.Length) { string[] notFoundRoleNames = roleNames .Where(rn => !foundAppRoles.Select(r => r.Name).ToArray() .Contains(rn)).ToArray(); throw new Exception( $"Roles with names: ${ string.Join(",", notFoundRoleNames) } " + $"could not be found in database - verify AppRoleEnum values."); } foreach (AppRole role in foundAppRoles) { user.Roles.Add(new AppUserToAppRole() { UserId = user.Id, RoleId = role.Id }); } dbContext.SaveChanges(); if (useOwnDbContext) { dbContext.Dispose(); } return(true); } catch (Exception e) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine(e); Console.ForegroundColor = ConsoleColor.Gray; return(false); } }
private bool TruncateAllData() { try { using (var dbAccess = new WorkshopManagerContext()) { dbAccess.Database.ExecuteSqlRaw("EXEC [dbo].[ClearDatabase] @restoreRoles = 1"); } Console.WriteLine("All database data has been dropped..."); return(true); } catch (Exception e) { Console.WriteLine(e); return(false); } }
public void OrdersMultiqueryTest() { try { using (var dbAccess = new WorkshopManagerContext()) { var order = dbAccess.Orders .Include("Client") .Include("WorkerOrders") .Where(o => o.Client.PhoneNumber.Equals("212992581")) .SingleOrDefault(); if (order != null) { Console.WriteLine(order.Client.LastName); var engagedWorkersIds = order.WorkerOrders .Select(wo => wo.WorkerId) .ToArray(); var engagedWorkers = dbAccess.Mechanicians.Where(w => engagedWorkersIds.Contains(w.Id)).ToArray(); if (engagedWorkers.Count() > 0) { foreach (var worker in engagedWorkers) { Console.WriteLine($"{worker.FirstName} {worker.LastName}"); } } else { Console.WriteLine("Not found any assigned workers to order..."); } } else { Console.WriteLine("Order not found..."); } } } catch (Exception e) { Console.WriteLine(e); } }
private bool LoadUser() { try { using (var db = new WorkshopManagerContext()) { var user = db.Users.SingleOrDefault(u => u.Username.Equals(_username)); if (user != null) { _user = user; } else { _user = PersistUser(db); } } } catch (Exception e) { return(false); } return(true); }
public bool GenerateFor(Order[] orders) { try { List <Part> parts = new List <Part>(); bool createSubParts; int subPartsCount; var _rand = new Random(); foreach (Order order in orders) { var part = CreatePart(order.Id); createSubParts = _rand.Next(1, 3) % 2 == 0; if (createSubParts) { subPartsCount = _rand.Next(1, _maxSubPartsCount + 1); var subParts = CreateSubPartsOf(order.Id, part, subPartsCount); part.SubParts = subParts; parts.AddRange(subParts); part.SubParts = subParts; } parts.Add(part); } using (var dbAccess = new WorkshopManagerContext()) { dbAccess.BulkInsert <Part>(parts); } return(true); } catch (Exception e) { Console.WriteLine(e); return(false); } }
public void Run() { var dataManager = new DataAccessManager(); AppUserHelper userHelper = new AppUserHelper(); string cmd = string.Empty; string originalCmd = string.Empty; while (!cmd.Equals("exit")) { Console.Write("WorkshopManagerCli> "); cmd = Console.ReadLine().ToLower(); if (cmd.Contains("user-helper")) { originalCmd = cmd; cmd = cmd.Substring(0, 10); } switch (cmd) { case "": // enter { break; } case "list clients": case "l clients": { var generator = new ClientData(); foreach (Client c in generator.Models) { Console.WriteLine(c.ToString()); } break; } case "list orders": case "l orders": case "l orders -r": { if (cmd.Contains("-r")) { Console.Write("how many days ago? "); int days; var read = Console.ReadLine(); if (Int32.TryParse(read, out days)) { using (var db = new WorkshopManagerContext()) { var res = db.Orders.FromSqlRaw <Order>($"SELECT * FROM [dbo].[GetOrdersRegisteredSince]({days})"); foreach (Order o in res) { Console.WriteLine(o.ToString()); } } } else { Console.WriteLine("Incorrect days value passed..."); } } else { var generator = new OrderData(); foreach (Order o in generator.Models) { Console.WriteLine(o.ToString()); } } break; } case "insert orders": case "i orders": { var generator = new OrderData(); generator.InsertModelsAndRelatedData(); break; } case "list mechanicians": case "l mechanicians": case "l mechs": { var generator = new MechanicianData(); foreach (Mechanician m in generator.Models) { Console.WriteLine(m.ToString()); } break; } case "insert mechanicians": case "i mechanicians": { var generator = new MechanicianData(); generator.InsertModelsAsync(); break; } case "db clear": case "db clear -aware": case "db clear -a": case "db c -a": { dataManager.Clear(cmd); break; } case "db reset": case "db reset -aware": case "db reset -a": case "db r -a": { dataManager.Clear(cmd); var generator = new OrderData(); generator.InsertModelsAndRelatedData(); break; } case "node-server login": { break; } case "user-helper": { userHelper.HandleCliCommand(originalCmd); break; } case "exit": case "q": { if (cmd.Equals("q")) { cmd = "exit"; } break; } default: { Console.WriteLine($"\n{cmd} is not known WorkshopManagerCli command...\n"); break; } } } Console.WriteLine("WorkshopManagerCli exited, press any key to close terminal window..."); }
private void LoadRoles(WorkshopManagerContext dbAccess) { _roles = dbAccess.Roles.ToArray(); }