public async Task <IActionResult> OnGetAsync(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }



            if (User.IsInRole("Client"))
            {
                var user = await _userManager.GetUserAsync(User);

                ReplacedPart = (from rp in _context.ReplacedPart.Include(r => r.OldPartImage).Include(rp => rp.NewPartBill)
                                join r in _context.Repair on rp.RepairID equals r.RepairID
                                where rp.ReplacedPartID == id.Value && r.ClientID == user.Id
                                select rp).AsNoTracking().FirstOrDefault();
            }
            else
            {
                ReplacedPart = await _context.ReplacedPart
                               .Include(rp => rp.OldPartImage)
                               .Include(rp => rp.NewPartBill)
                               .AsNoTracking()
                               .FirstOrDefaultAsync(m => m.ReplacedPartID == id);
            }


            if (ReplacedPart == null)
            {
                return(NotFound());
            }
            return(Page());
        }
        public async Task <IActionResult> OnGetAsync(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            ReplacedPart = await _context.ReplacedPart
                           .Include(rp => rp.OldPartImage)
                           .Include(rp => rp.NewPartBill)
                           .AsNoTracking()
                           .FirstOrDefaultAsync(m => m.ReplacedPartID == id);

            if (ReplacedPart == null)
            {
                return(NotFound());
            }

            if (!RepairNotClosed(ReplacedPart.RepairID))
            {
                return(NotFound());
            }

            return(Page());
        }
        public ActionResult DeleteConfirmed(int id)
        {
            ReplacedPart replacedpart = db.ReplacedParts.Find(id);

            db.ReplacedParts.Remove(replacedpart);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
        //
        // GET: /ReplacedPart/Details/5

        public ActionResult Details(int id = 0)
        {
            ReplacedPart replacedpart = db.ReplacedParts.Find(id);

            if (replacedpart == null)
            {
                return(HttpNotFound());
            }
            return(View(replacedpart));
        }
        //
        // GET: /ReplacedPart/Edit/5

        public ActionResult Edit(int id = 0)
        {
            ReplacedPart replacedpart = db.ReplacedParts.Find(id);

            if (replacedpart == null)
            {
                return(HttpNotFound());
            }
            ViewBag.statusId      = new SelectList(db.Catalogs, "catalogId", "catalogValue", replacedpart.statusId);
            ViewBag.servicePartId = new SelectList(db.ServiceParts, "servicePartId", "servicePartDescription", replacedpart.servicePartId);
            ViewBag.supplierId    = new SelectList(db.SupplierParts, "supplierId", "supplierId", replacedpart.supplierId);
            ViewBag.serviceCarId  = new SelectList(db.ServiceCars, "serviceCarId", "serviceCarDescription", replacedpart.serviceCarId);
            return(View(replacedpart));
        }
 public ActionResult Edit(ReplacedPart replacedpart)
 {
     if (ModelState.IsValid)
     {
         db.Entry(replacedpart).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     ViewBag.statusId      = new SelectList(db.Catalogs, "catalogId", "catalogValue", replacedpart.statusId);
     ViewBag.servicePartId = new SelectList(db.ServiceParts, "servicePartId", "servicePartDescription", replacedpart.servicePartId);
     ViewBag.supplierId    = new SelectList(db.SupplierParts, "supplierId", "supplierId", replacedpart.supplierId);
     ViewBag.serviceCarId  = new SelectList(db.ServiceCars, "serviceCarId", "serviceCarDescription", replacedpart.serviceCarId);
     return(View(replacedpart));
 }
Beispiel #7
0
        //the part that is enabled and disabled
        public override void OnStart(StartState state)
        {
            base.OnStart(state);

            if (HighLogic.LoadedSceneIsEditor)
            {
                if (!editorChangeRegistered)
                {
                    GameEvents.onEditorShipModified.Add(shipModified);
                    editorChangeRegistered = false;
                }
                if (flightChangeRegistered)
                {
                    GameEvents.onVesselWasModified.Remove(vesselModified);
                    flightChangeRegistered = false;
                }
            }
            if (HighLogic.LoadedSceneIsFlight)
            {
                if (!flightChangeRegistered)
                {
                    GameEvents.onVesselWasModified.Add(vesselModified);
                    flightChangeRegistered = true;
                }
                if (flightChangeRegistered)
                {
                    GameEvents.onEditorShipModified.Remove(shipModified);
                    editorChangeRegistered = false;
                }
            }

            string[] nodenames           = nodeNames.Split(',');
            string[] transformGroupNames = transormNames.Split(',');

            List <string[]> transformnames = new List <string[]>();

            //when the lengths are not equal
            if (transformGroupNames.Length != nodenames.Length)
            {
                return;
            }

            //----------------------------------------------------------
            //create the list of transforms to be made visible on attach
            //----------------------------------------------------------

            //remove the whitespaces
            for (int i = 0; i < nodenames.Length; i++)
            {
                nodenames[i] = nodenames[i].Trim();

                //split up the names for the nodes
                string[] transformGroup = transformGroupNames[i].Split('|');

                for (int j = 0; j < transformGroup.Length; j++)
                {
                    transformGroup[j] = transformGroup[j].Trim();
                }
                transformnames.Add(transformGroup);
            }

            int num = 0;

            for (int i = 0; i < nodenames.Length; i++)
            {
                AttachNode       node       = part.FindAttachNode(nodenames[i]);
                List <Transform> transforms = new List <Transform>();
                for (int k = 0; k < transformnames[num].Length; k++)
                {
                    transforms.AddRange(part.FindModelTransforms(transformnames[num][k]));
                }

                //when nodes and transforms are valid and found
                if ((node != null) && (transforms.Count > 0))
                {
                    //create the new corridor data
                    CorridorPart corridor = new CorridorPart();
                    corridor.node       = node;
                    corridor.transforms = transforms;

                    if ((allowSurfaceAttach) && (surfaceAttachNode == nodenames[i]) && (part.srfAttachNode != null))
                    {
                        corridor.isSurfaceAttachPoint = true;
                    }
                    else
                    {
                        corridor.isSurfaceAttachPoint = false;
                    }

                    corridor.lastAttached = true;
                    corridors.Add(corridor);
                }
                num++;
            }

            //------------------------------------------------------------
            //create the list of transforms to be made invisible on attach
            //------------------------------------------------------------
            string[]        replaceTransformGroupNames = null;
            string[]        replaceNodeGroupNames      = null;
            List <string[]> replacetransformnames      = new List <string[]>();
            List <string[]> replacenodenames           = new List <string[]>();

            if ((replaceTransformNames != string.Empty) && (replaceNodeNames != string.Empty))
            {
                replaceTransformGroupNames = replaceTransformNames.Split(',');
                replaceNodeGroupNames      = replaceNodeNames.Split(',');

                if (replaceNodeGroupNames.Length == replaceTransformGroupNames.Length)
                {
                    //split up all the name for the groups
                    for (int i = 0; i < replaceNodeGroupNames.Length; i++)
                    {
                        //split up the names for the nodes
                        string[] transformGroup = replaceTransformGroupNames[i].Split('|');
                        for (int j = 0; j < transformGroup.Length; j++)
                        {
                            transformGroup[j] = transformGroup[j].Trim();
                        }
                        replacetransformnames.Add(transformGroup);

                        string[] nodeGroup = replaceNodeGroupNames[i].Split('|');
                        for (int j = 0; j < nodeGroup.Length; j++)
                        {
                            nodeGroup[j] = nodeGroup[j].Trim();
                        }
                        replacenodenames.Add(nodeGroup);
                    }


                    //for all transform groups
                    num = 0;
                    for (int i = 0; i < replacetransformnames.Count; i++)
                    {
                        List <Transform>  rTransforms  = new List <Transform>();
                        List <AttachNode> rAttachnodes = new List <AttachNode>();

                        for (int j = 0; j < replacetransformnames[i].Length; j++)
                        {
                            //Debug.Log("[KPBS] Replace Tranform Name: " + replacetransformnames[i][j]);
                            rTransforms.AddRange(part.FindModelTransforms(replacetransformnames[i][j]));
                        }

                        for (int j = 0; j < replacenodenames[num].Length; j++)
                        {
                            //Debug.Log("[KPBS] Replace Node Name: " + replacenodenames[num][j]);
                            rAttachnodes.Add(part.FindAttachNode(replacenodenames[num][j]));
                        }

                        if ((rTransforms.Count > 0) && (rAttachnodes.Count > 0))
                        {
                            ReplacedPart rp = new ReplacedPart();
                            rp.nodes      = rAttachnodes;
                            rp.transforms = rTransforms;
                            replaceParts.Add(rp);
                        }
                        num++;
                    }
                }
            }
            //check the visibility of all the parts
            updateAllCorridors();
        }
        public async Task <IActionResult> OnPostAsync(int id)
        {
            if (!ModelState.IsValid)
            {
                return(Page());
            }

            var emptyPart = new ReplacedPart();

            if (await TryUpdateModelAsync <ReplacedPart>(emptyPart, "ReplacedPart",
                                                         p => p.Name, p => p.Manufacturer, p => p.ProductionDate, p => p.Quantity, p => p.Price))
            {
                var repair = await _context.Repair.FindAsync(id);

                if (repair == null || repair.InvoiceIssued)
                {
                    return(NotFound());
                }
                emptyPart.Repair = repair;

                string wwwRoot = _hostEnviroment.WebRootPath;


                if (ReplacedPart.NewPartBill != null)
                {
                    string extension = Path.GetExtension(ReplacedPart.NewPartBill.File.FileName);
                    ReplacedPart.NewPartBill.FileName = Path.GetRandomFileName() + DateTime.Now.ToString("yyyyMMdd_HH_mm_ss") + extension;
                    string path = Path.Combine(wwwRoot + "/bills/", ReplacedPart.NewPartBill.FileName);

                    var billModel = new FileModel
                    {
                        Title    = ReplacedPart.NewPartBill.Title,
                        FileName = ReplacedPart.NewPartBill.FileName
                    };

                    using (var fileSteam = new FileStream(path, FileMode.Create))
                    {
                        await ReplacedPart.NewPartBill.File.CopyToAsync(fileSteam);
                    }

                    _context.Files.Add(billModel);
                    emptyPart.NewPartBill = billModel;
                }

                if (ReplacedPart.OldPartImage.File != null)
                {
                    string extension = Path.GetExtension(ReplacedPart.OldPartImage.File.FileName);
                    ReplacedPart.OldPartImage.FileName = Path.GetRandomFileName() + DateTime.Now.ToString("yyyyMMdd_HH_mm_ss") + extension;
                    string path = Path.Combine(wwwRoot + "/imgs/oldparts/", ReplacedPart.OldPartImage.FileName);

                    var image = new FileModel
                    {
                        Title    = ReplacedPart.OldPartImage.Title,
                        FileName = ReplacedPart.OldPartImage.FileName
                    };

                    using (var fileSteam = new FileStream(path, FileMode.Create))
                    {
                        await ReplacedPart.OldPartImage.File.CopyToAsync(fileSteam);
                    }

                    _context.Files.Add(image);
                    emptyPart.OldPartImage = image;
                }

                _context.ReplacedPart.Add(emptyPart);
                await _context.SaveChangesAsync();
            }



            //return RedirectToPage("/Repairs/Index");
            return(RedirectToPage("/Repairs/Index", "id", new { id = id }));
        }
        public async static Task Initialize(RepairShopContext context, UserManager <RepairShopUser> userManager, RoleManager <ApplicationRole> roleManager)
        {
            context.Database.EnsureCreated();

            string[] roleNames = { "Admin", "Client", "Mechanic" };
            Task <IdentityResult> roleResult;

            foreach (var roleName in roleNames)
            {
                var roleExist = roleManager.RoleExistsAsync(roleName);
                roleExist.Wait();
                if (!roleExist.Result)
                {
                    ApplicationRole ap = new ApplicationRole();
                    ap.Name = roleName;
                    //create the roles and seed them to the database: Question 1
                    roleResult = roleManager.CreateAsync(ap);
                    roleResult.Wait();
                }
            }
            // Look for any students.
            if (context.Users.Any())
            {
                return;       // DB has been seeded
            }

            var client = new RepairShopUser {
                UserName = "******", Email = "*****@*****.**", FirstName = "John", LastName = "Kowalsky"
            };
            await userManager.CreateAsync(client, "Test!@#123");

            client.EmailConfirmed = true;
            await userManager.AddToRoleAsync(client, "Client");



            var mechanic = new RepairShopUser {
                UserName = "******", Email = "*****@*****.**", FirstName = "Mark", LastName = "Stafford"
            };
            await userManager.CreateAsync(mechanic, "Test!@#123");

            mechanic.EmailConfirmed = true;
            await userManager.AddToRoleAsync(mechanic, "Mechanic");


            var admin = new RepairShopUser {
                UserName = "******", Email = "*****@*****.**", FirstName = "Admin", LastName = "Admin"
            };
            await userManager.CreateAsync(admin, "Test!@#123");

            admin.EmailConfirmed = true;
            await userManager.AddToRoleAsync(admin, "Admin");



            var car = new Car
            {
                Brand          = "Audi",
                Model          = "A4",
                BodyType       = BodyType.Sedan,
                EngineFuel     = EngineFuel.Diesel,
                EngineCapacity = 1900,
                productionYear = 1999
            };

            context.Car.Add(car);


            var repair = new Repair
            {
                Description        = "This a example repair description created for testing purposes. Real description will be much longer and more interesting",
                ProblemDescription = "This a example of problem description created for testing purposes. Real description will be much longer and more interesting",
                RepairState        = RepairState.Reported,
                startTime          = DateTime.Now,
                WorkPrice          = 1,
                Client             = client,
                AssignedMechanic   = mechanic,
                Car = car,
            };


            context.Repair.Add(repair);

            var image = new FileModel
            {
                FileName = "lamp.jpg",
                Title    = "Old lamp"
            };

            context.Files.Add(image);

            var replacedPart = new ReplacedPart
            {
                Manufacturer   = "Audi",
                Name           = "Front lamp",
                Price          = 100,
                ProductionDate = DateTime.Now,
                Quantity       = 1,
                Repair         = repair,
                OldPartImage   = image
            };

            context.ReplacedPart.Add(replacedPart);



            var visit = new Visit
            {
                VisitClient      = client,
                VisitMechanic    = mechanic,
                VisitPurpose     = "This a example visit description created for testing purposes. Real description will be much longer and more interesting",
                AcceptedClient   = true,
                AcceptedMechanic = false,
                PlannedVisitDate = DateTime.Now
            };

            context.Visit.Add(visit);
            context.SaveChanges();
        }
        //the part that is enabled and disabled
        public override void OnStart(StartState state)
        {
            base.OnStart(state);

            if (HighLogic.LoadedSceneIsEditor)
            {
                if (!editorChangeRegistered)
                {
                    GameEvents.onEditorShipModified.Add(shipModified);
                    editorChangeRegistered = false;
                }
                if (flightChangeRegistered)
                {
                    GameEvents.onVesselWasModified.Remove(vesselModified);
                    flightChangeRegistered = false;
                }
            }
            if (HighLogic.LoadedSceneIsFlight)
            {
                if (!flightChangeRegistered)
                {
                    GameEvents.onVesselWasModified.Add(vesselModified);
                    flightChangeRegistered = true;
                }
                if (flightChangeRegistered)
                {
                    GameEvents.onEditorShipModified.Remove(shipModified);
                    editorChangeRegistered = false;
                }
            }

            string[] nodenames = nodeNames.Split(',');
            string[] transformGroupNames = transormNames.Split(',');

            List<string[]> transformnames = new List<string[]>();

            //when the lengths are not equal
            if (transformGroupNames.Length != nodenames.Length)
                return;

            //----------------------------------------------------------
            //create the list of transforms to be made visible on attach
            //----------------------------------------------------------

            //remove the whitespaces
            for (int i = 0; i < nodenames.Length; i++)
            {
                nodenames[i] = nodenames[i].Trim();

                //split up the names for the nodes
                string[] transformGroup = transformGroupNames[i].Split('|');

                for (int j = 0; j < transformGroup.Length; j++)
                {
                    transformGroup[j] = transformGroup[j].Trim();
                }
                transformnames.Add(transformGroup);
            }

            int num = 0;
            foreach (string nodeName in nodenames)
            {
                AttachNode node = part.findAttachNode(nodeName);

                List<Transform> transforms = new List<Transform>();
                for (int k = 0; k < transformnames[num].Length; k++) {
                    transforms.AddRange(part.FindModelTransforms(transformnames[num][k]));
                }

                //when nodes and transforms are valid and found
                if ((node != null) && (transforms.Count > 0))
                {
                    //create the new corridor data
                    CorridorPart corridor = new CorridorPart();
                    corridor.node = node;
                    corridor.transforms = transforms;

                    if ((allowSurfaceAttach) && (surfaceAttachNode == nodeName) && (part.srfAttachNode != null))
                    {
                        corridor.isSurfaceAttachPoint = true;
                    }
                    else
                    {
                        corridor.isSurfaceAttachPoint = false;
                    }

                    corridor.lastAttached = true;
                    corridors.Add(corridor);
                }
                num++;
            }

            //------------------------------------------------------------
            //create the list of transforms to be made invisible on attach
            //------------------------------------------------------------
            string[] replaceTransformGroupNames = null;
            string[] replaceNodeGroupNames = null;
            List<string[]> replacetransformnames = new List<string[]>();
            List<string[]> replacenodenames = new List<string[]>();

            if ((replaceTransformNames != string.Empty) && (replaceNodeNames != string.Empty))
            {
                replaceTransformGroupNames = replaceTransformNames.Split(',');
                replaceNodeGroupNames = replaceNodeNames.Split(',');

                if (replaceNodeGroupNames.Length == replaceTransformGroupNames.Length)
                {

                    //split up all the name for the groups
                    for (int i = 0; i < replaceNodeGroupNames.Length; i++)
                    {
                        //split up the names for the nodes
                        string[] transformGroup = replaceTransformGroupNames[i].Split('|');
                        for (int j = 0; j < transformGroup.Length; j++)
                        {
                            transformGroup[j] = transformGroup[j].Trim();
                        }
                        replacetransformnames.Add(transformGroup);

                        string[] nodeGroup = replaceNodeGroupNames[i].Split('|');
                        for (int j = 0; j < nodeGroup.Length; j++)
                        {
                            nodeGroup[j] = nodeGroup[j].Trim();
                        }
                        replacenodenames.Add(nodeGroup);
                    }

                    //for all transform groups
                    num = 0;
                    foreach (string[] tNames in replacetransformnames)
                    {

                        List<Transform> rTransforms = new List<Transform>();
                        List<AttachNode> rAttachnodes = new List<AttachNode>();

                        foreach (string tName in tNames)
                        {
                            Debug.Log("[KPBS] Replace Tranform Name: " + tName);
                            rTransforms.AddRange(part.FindModelTransforms(tName));
                        }
                        foreach (string nName in replacenodenames[num])
                        {
                            Debug.Log("[KPBS] Replace Node Name: " + nName);
                            rAttachnodes.Add(part.findAttachNode(nName));
                        }

                        if ((rTransforms.Count > 0) && (rAttachnodes.Count > 0))
                        {
                            ReplacedPart rp = new ReplacedPart();
                            rp.nodes = rAttachnodes;
                            rp.transforms = rTransforms;
                            replaceParts.Add(rp);
                        }
                        num++;
                    }
                }
            }
            //check the visibility of all the parts
            updateAllCorridors();
        }