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);
        }
Пример #2
0
        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);
     }
 }
Пример #6
0
        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);
            }
        }
Пример #7
0
 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();
 }