Пример #1
0
        //Deactivate Device
        public IActionResult DeleteDevice(EditDeviceModel data)
        {
            //initializing DB managers
            DBManagerDevice dbManager = new DBManagerDevice(configuration);

            data.Device.ChangedBy = HttpContext.Session.GetString("uniLogin");

            data.Device.Status = 0;

            //change status of device to deactivated
            int success = dbManager.EditDevice(data);

            if (success > 0)
            {
                ViewBag.Delete = "Enhed slettet";
            }
            else
            {
                ViewBag.Delete = "Enhed er i brug";
            }

            //create blank model
            data = new EditDeviceModel();
            DeviceModel device = new DeviceModel();

            data.Device = device;

            // clear model
            ModelState.Clear();

            return(View("EditView", data));
        }
Пример #2
0
        public IActionResult GetLocations(EditDeviceModel data)
        {
            //initializing DB managers
            DBManagerDevice dbManager = new DBManagerDevice(configuration);
            DBManagerShared shared    = new DBManagerShared(configuration);

            //get the logs back again
            List <DeviceModel> logs = dbManager.GetDeviceLogs(data.Device.DeviceID);
            int modelID             = shared.GetModelID(data.Device.Model.ModelName);

            data.Logs = logs;
            EditDeviceModel newdata = data;

            //check if image exists
            string filename  = $"Capture_{modelID}.png";
            string imagepath = (string)AppDomain.CurrentDomain.GetData("webRootPath") + "\\DeviceContent\\" + filename;

            if (System.IO.File.Exists(imagepath))
            {
                newdata.ImagePath = filename;
            }

            //fetch storage locations if user has typed a valid room
            if (data.Room != null)
            {
                //prep data for database
                string[] splittedRoom = data.Room.Split('.');

                //prep data model
                EditDeviceModel      editData        = new EditDeviceModel();
                DeviceModel          device          = new DeviceModel();
                BuildingModel        building        = new BuildingModel(splittedRoom[0], Convert.ToByte(splittedRoom[1]));
                StorageLocationModel storageLocation = new StorageLocationModel();
                storageLocation.Location = building;
                device.Location          = storageLocation;
                editData.Device          = device;

                //get storagelocations
                EditDeviceModel locations = dbManager.GetStorageLocations(editData);

                newdata.Shelfs = locations.Shelfs;
                newdata.Shelf  = null;
            }
            //return the same data without having selected anything
            else
            {
                EditDeviceModel storagelocation = dbManager.GetStorageLocations(null);
                newdata.Rooms = storagelocation.Rooms;
                newdata.Shelf = null;
            }



            // clear model
            ModelState.Clear();



            return(View("EditView", newdata));
        }
Пример #3
0
        //saves new location on device to database
        public IActionResult EditLocation(EditDeviceModel data)
        {
            //initializing DB managers
            DBManagerDevice dbManager = new DBManagerDevice(configuration);
            DBManagerShared shared    = new DBManagerShared(configuration);

            data.Device.ChangedBy = HttpContext.Session.GetString("uniLogin");

            //prep data for database
            string[] splittedRoom  = data.Room.Split('.');
            string[] splittedShelf = data.Shelf.Split('.');

            //set data models
            BuildingModel        building        = new BuildingModel(splittedRoom[0], Convert.ToByte(splittedRoom[1]));
            StorageLocationModel storageLocation = new StorageLocationModel(splittedShelf[0], Convert.ToByte(splittedShelf[1]), Convert.ToByte(splittedShelf[2]), building);

            data.Device.Location = storageLocation;
            data.Device.Notes    = "Placering redigeret";

            //send data to database
            data = dbManager.EditDeviceLocation(data);

            List <DeviceModel> logs = dbManager.GetDeviceLogs(data.Device.DeviceID);

            data.Logs = logs;

            //save Device name & other important things
            //send data to database
            int success = dbManager.EditDevice(data);
            int modelID = shared.GetModelID(data.Device.Model.ModelName);

            //check if image exists
            string filename  = $"Capture_{modelID}.png";
            string imagepath = (string)AppDomain.CurrentDomain.GetData("webRootPath") + "\\DeviceContent\\" + filename;

            if (System.IO.File.Exists(imagepath))
            {
                data.ImagePath = filename;
            }

            //set message to be shown in view
            if (success > 0)
            {
                ViewBag.Location = "Placering Gemt";
            }
            else
            {
                ViewBag.Location = "Placering ikke Gemt";
            }

            return(View("EditView", data));
        }
Пример #4
0
        //getting data from database & return model to view
        public IActionResult EditView(string submit)
        {
            //initializing DB managers
            DBManagerDevice dbManager       = new DBManagerDevice(configuration);
            DBManagerShared dbsharedManager = new DBManagerShared(configuration);

            //return device info to Edit view
            int         ID   = int.Parse(submit);
            DeviceModel data = new DeviceModel();

            data = dbManager.GetDeviceInfoWithLocation(ID);
            List <DeviceModel> logs            = dbManager.GetDeviceLogs(ID);
            List <string>      categories      = dbsharedManager.GetCategories();
            List <string>      modelNames      = dbsharedManager.GetModelNames();
            EditDeviceModel    storagelocation = dbManager.GetStorageLocations(null);
            int modelID = dbsharedManager.GetModelID(data.Model.ModelName);

            EditDeviceModel editdata = new EditDeviceModel();

            editdata.Device = data;
            editdata.Room   = new string($"{data.Location.Location.Building}.{data.Location.Location.RoomNumber.ToString()}");
            editdata.Shelf  = new string($"{data.Location.ShelfName}.{data.Location.ShelfLevel}.{data.Location.ShelfSpot}");

            //check if image exists
            string filename  = $"Capture_{modelID}.png";
            string imagepath = (string)AppDomain.CurrentDomain.GetData("webRootPath") + "\\DeviceContent\\" + filename;

            if (System.IO.File.Exists(imagepath))
            {
                editdata.ImagePath = filename;
            }


            editdata.Logs       = logs;
            editdata.Categories = categories;
            editdata.ModelNames = modelNames;
            editdata.Rooms      = storagelocation.Rooms;

            //test to get all rooms and shelves
            storagelocation = dbManager.GetStorageLocations(editdata);
            editdata.Rooms  = storagelocation.Rooms;
            editdata.Shelfs = storagelocation.Shelfs;


            return(View(editdata));
        }
Пример #5
0
        public IActionResult Inventory(ModelInfoModel infoList)
        {
            //generate an instance of the database manager
            DBManagerDevice DBDManager = new DBManagerDevice(configuration);

            //set dummy data to database
            infoList.SearchName = "L";

            infoList.Category = null;
            infoList.InStock  = 0;

            //get data from the manager
            infoList = DBDManager.GetDeviceInventory(infoList);

            //send data to the manager

            //var combinedLists = infoList.BorrowedDevices.Zip(infoList.InventoryStatuses, (b, i) => new { device = b, status = i });
            //foreach (var item in combinedLists)
            //{
            //    Debug.WriteLine("device ID: " +item.device.DeviceID + " status: " + item.status);
            //}

            return(View(infoList));
        }
Пример #6
0
        //Add Device to Database
        public IActionResult AddDeviceToDB(CreateDeviceModel deviceData)
        {
            //initializing DB managers
            DBManagerDevice dbManager       = new DBManagerDevice(configuration);
            DBManagerShared dbsharedManager = new DBManagerShared(configuration);
            int             modelID         = dbsharedManager.GetModelID(deviceData.Device.Model.ModelName);

            //check if image exists
            //  string filename = $"Capture_{modelID}.png";
            string imagepath = deviceData.Image;
            string _webroot  = (string)AppDomain.CurrentDomain.GetData("webRootPath");

            if (!imagepath.Contains(_webroot))
            {
                //convet image source to byte array
                string sourceimage = deviceData.Image;
                string base64      = sourceimage.Substring(sourceimage.IndexOf(',') + 1);
                byte[] datastream  = Convert.FromBase64String(base64);

                //convert byte array to image file
                using (MemoryStream m = new MemoryStream(datastream))
                {
                    using (Image image = Image.FromStream(m))
                    {
                        string root    = (string)AppDomain.CurrentDomain.GetData("webRootPath");
                        string webroot = root + "\\DeviceContent";

                        string filename = "\\Capture.png";
                        if (Directory.Exists(webroot))
                        {
                            // save image to directory
                            image.Save(webroot + filename, ImageFormat.Png);
                            m.Dispose();
                            image.Dispose();
                            datastream = null;

                            //get filename
                            deviceData.Image = filename;
                        }
                    }
                }
            }


            //Add device to database
            DeviceModel data = deviceData.Device;

            data.ChangedBy = HttpContext.Session.GetString("uniLogin");
            int deviceID = dbManager.CreateDevice(data);

            //return device info to Edit view
            data = dbManager.GetDeviceInfoWithLocation(deviceID);
            List <DeviceModel> logs       = dbManager.GetDeviceLogs(deviceID);
            List <string>      categories = dbsharedManager.GetCategories();
            List <string>      modelNames = dbsharedManager.GetModelNames();

            modelID = dbsharedManager.GetModelID(data.Model.ModelName);

            EditDeviceModel editdata = new EditDeviceModel();

            editdata.Device     = data;
            editdata.Logs       = logs;
            editdata.Categories = categories;
            editdata.ModelNames = modelNames;
            editdata.Room       = new string($"{data.Location.Location.Building}.{data.Location.Location.RoomNumber.ToString()}");
            editdata.Shelf      = new string($"{data.Location.ShelfName}.{data.Location.ShelfLevel}.{data.Location.ShelfSpot}");
            editdata.ImagePath  = $"Capture_{modelID}.png";

            return(View("EditView", editdata));
        }
Пример #7
0
        //saves all edits on device to database
        public IActionResult EditDevice(EditDeviceModel data)
        {
            //initializing DB managers
            DBManagerDevice dbManager       = new DBManagerDevice(configuration);
            EditDeviceModel storagelocation = dbManager.GetStorageLocations(null);

            //check categories
            bool Category_validated = checkUserInput(data.Categories, data.Device.Model.Category.Category);

            //check modelNames
            bool ModelName_validated = checkUserInput(data.ModelNames, data.Device.Model.ModelName);

            //check BuildingNames
            bool Building_validated = checkUserInput(storagelocation.Rooms, data.Room);

            //check RoomNames
            bool Room_validated = checkUserInput(storagelocation.Shelfs, data.Shelf);

            if (Category_validated && ModelName_validated && Building_validated && Room_validated)
            {
                Debug.WriteLine("success");
            }
            else
            {
                //set view bags
                if (!Category_validated)
                {
                    ViewBag.Error = "indtast en gyldig kategori";
                }
                else if (!ModelName_validated)
                {
                    ViewBag.Error = "indtast et gyldigt model navn";
                }
                else if (!Building_validated)
                {
                    ViewBag.LocationError = "indtast en gyldig lokation";
                }
                else if (!Room_validated)
                {
                    ViewBag.LocationError = "indtast en gyldig hylde";
                }

                return(View("EditView", data));
            }


            data.Device.ChangedBy = HttpContext.Session.GetString("uniLogin");
            data.Device.Notes     = "Enhed redigeret";

            #region saving new location
            //prep data for database
            string[] splittedRoom  = data.Room.Split('.');
            string[] splittedShelf = data.Shelf.Split('.');

            //set data models
            BuildingModel        building        = new BuildingModel(splittedRoom[0], Convert.ToByte(splittedRoom[1]));
            StorageLocationModel storageLocation = new StorageLocationModel(splittedShelf[0], Convert.ToByte(splittedShelf[1]), Convert.ToByte(splittedShelf[2]), building);
            data.Device.Location = storageLocation;
            //data.Device.Notes = "Placering redigeret";

            //send data to database
            data = dbManager.EditDeviceLocation(data);
            #endregion

            //get the logs again
            List <DeviceModel> logs = dbManager.GetDeviceLogs(data.Device.DeviceID);
            data.Logs = logs;

            //send data to database
            int success = dbManager.EditDevice(data);

            //set message to be shown in view
            if (success > 0)
            {
                ViewBag.edit = "Enhed Gemt";
            }
            else
            {
                ViewBag.edit = "Enhed ikke Gemt";
            }

            return(View("EditView", data));
        }
Пример #8
0
        /// <summary>
        /// Contextively processes what to do with this device id for this booking id. Be it create BookedDevice, return BookedDevice, or even delete.
        /// </summary>
        /// <param name="deviceID"></param>
        /// <param name="bookingID"></param>
        /// <returns></returns>
        public IActionResult ProcessDeviceForBooking(string deviceID, string bookingID)
        {
            HttpContext.Session.SetString("bookedDeviceError", "");
            // FIrst, try and see if it's possible to convert and then do so.
            if (int.TryParse(deviceID, out int deviceIDInteger))
            {
                DBManagerBooking dBManager       = new DBManagerBooking(configuration);
                DBManagerDevice  dBManagerDevice = new DBManagerDevice(configuration);

                // Second, find out if the deviceID is a valid one (if it exists and is Enabled (status = 1))
                DeviceModel  device  = dBManagerDevice.GetDeviceInfoWithLocation(deviceIDInteger);
                BookingModel booking = dBManager.GetBooking(int.Parse(bookingID));
                booking.Devices = dBManager.GetBookedDevices(int.Parse(bookingID));

                if (device.Model.ModelName != null && device.Status == 1 && booking.BookingStatus == 1)
                {
                    // Find out if you're supposed to Create the bookedDevice, or undo the bookedDevice or return the device
                    bool deviceInBookingAlready = false;
                    foreach (DeviceModel device1 in booking.Devices)
                    {
                        if (device1.DeviceID == device.DeviceID)
                        {
                            if (booking.DeliveredBy == null)
                            {
                                // The delivery for this booking has not been made yet, ergo the bookedDevice may be Deleted. An Undo.
                                // "DeleteBookedDevice"
                                dBManager.DeleteBookedDevice(device.DeviceID, booking.BookingID);
                            }
                            else if (device1.ReturnedBy == null || device1.ReturnedBy == "")
                            {
                                // Delivery has already been made. Update BookedDevice to be Returned.
                                // "ReturnBookedDevice"
                                dBManager.ReturnBookedDevice(device.DeviceID, booking.BookingID, HttpContext.Session.GetString("uniLogin"));
                            }
                            else
                            {
                                // This device has already been returned
                                HttpContext.Session.SetString("bookedDeviceError", "Denne Enhed er allerede blevet returneret.");
                            }
                            deviceInBookingAlready = true;
                            break;
                        }
                    }

                    if (!deviceInBookingAlready)
                    {
                        // THe device does not already exist for this booking, therefore it should be created.. if the device is available.
                        // CreateBookedDevice() will perform an availability check on its own.
                        if (!dBManager.CreateBookedDevice(device.DeviceID, booking.BookingID))
                        {
                            // The requested device is not available! Perhaps not returned from another Booking, or being repaired.
                            HttpContext.Session.SetString("bookedDeviceError", "Denne enhed er allerede udlånt til en anden bestilling, eller er på værkstedet.");
                        }
                    }
                }
                else
                {
                    // This device does not exist or is Disabled
                    HttpContext.Session.SetString("bookedDeviceError", "Denne enhed eksisterer ikke, eller er slået fra. Eller denne booking er deaktiveret.");
                }
            }
            else
            {
                // It is not possible to convert the input to an integer, therefore we can do nothing with it.
                HttpContext.Session.SetString("bookedDeviceError", "Input kunne ikke konverteres til et helt tal.");
            }

            return(GoToScanDevices(bookingID));
        }