public static BusinessObject.Notification ToBusinessObject(Entities.Notification entity)
        {
            if (entity == null)
                return null;

            BusinessObject.Notification businessObject = new BusinessObject.Notification
            {
                OrderId = entity.OrderId,
                IsRead = entity.IsRead,
                NotificationId = entity.NotificationId,
                NotificationMessage = entity.NotificationMessage,
                NotificationType = (Enumeration.NotificationType)entity.NotificationTypeId
            };

            return businessObject;
        }
Example #2
0
        public static BusinessObject.Notification ToBusinessObject(Entities.Notification entity)
        {
            if (entity == null)
            {
                return(null);
            }

            BusinessObject.Notification businessObject = new BusinessObject.Notification
            {
                OrderId             = entity.OrderId,
                IsRead              = entity.IsRead,
                NotificationId      = entity.NotificationId,
                NotificationMessage = entity.NotificationMessage,
                NotificationType    = (Enumeration.NotificationType)entity.NotificationTypeId
            };

            return(businessObject);
        }
Example #3
0
        public static Entities.Notification ToEntity(BusinessObject.Notification businessObject)
        {
            if (businessObject == null)
            {
                return(null);
            }

            Entities.Notification entity = new Entities.Notification
            {
                OrderId             = businessObject.OrderId,
                IsRead              = businessObject.IsRead,
                NotificationId      = businessObject.NotificationId,
                NotificationMessage = businessObject.NotificationMessage,
                NotificationTypeId  = (int)businessObject.NotificationType
            };

            return(entity);
        }
        // MARK AS SOLD submit button click event
        private void btn_SubmitRequest_Click(object sender, EventArgs e)
        {
            int updateReturnValue;
            int notificationReturnValue;
            BusinessObjects _businessObjects = new BusinessObjects();

            // Verify that user enterd an order Id, and that they had an inventory item selected in the search result combobox
            if ((tbx_OrderSold.Text == null) || (cbx_ResultsList.SelectedItem == null))
            {
                MessageBox.Show("Invalid input.  Please make sure you have selected an inventory item & entered an Order ID and try again", "Invalid Stock Request",
                                    MessageBoxButtons.OK, MessageBoxIcon.Hand);
                return;
            }
            // Verify that the item that has been selected is not already marked as SOLD
            else if (inventoryItems[cbx_ResultsList.SelectedIndex].InventoryItemStatus != InventoryItemStatus.Stock)
            {
                MessageBox.Show("You have selected an inventory item that is not in stock.  Please try again", "Invalid Item Status",
                                    MessageBoxButtons.OK, MessageBoxIcon.Hand);
                return;
            }

            // If user input appears to be valid, continue
            else
            {
                try
                {
                    // Try to convert user input to a Guid
                    Order order = _businessObjects.GetOrder(new Guid(tbx_OrderSold.Text.ToString()));

                    // Verify that an Order was found
                    if (order == null)
                    {
                        MessageBox.Show("We were unable to find an order with the ID that you entered.  Please try again", "No Order Found",
                                    MessageBoxButtons.OK, MessageBoxIcon.Hand);
                        return;
                    }

                    // Add order ID to inventory item
                    InventoryItem inventoryItem = inventoryItems[cbx_ResultsList.SelectedIndex];
                    inventoryItem.OrderId = order.OrderId;

                    // Change inventory item status to SOLD
                    inventoryItem.InventoryItemStatus = InventoryItemStatus.Sold;

                    //Update inventory and populate result value variable
                    updateReturnValue = _businessObjects.UpdateInventoryItem(inventoryItem);

                    // Display message based on success or failue of database update
                    if (updateReturnValue == 0)
                    {
                        BusinessObjects _notificationBusinessObject = new BusinessObjects();
                        // Populate notification fields manually
                        Notification notification = new Notification();
                        notification.OrderId = order.OrderId;
                        notification.NotificationId = Guid.NewGuid();
                        notification.NotificationMessage = ("Please pull inventory item : " +
                                                            inventoryItem.InventoryItemId.ToString());
                        notification.NotificationType = NotificationType.MediaPull;
                        notification.IsRead = false;
                        notification.PermissionScope = Permission.StockClerk;

                        // Insert notification into database table
                        notificationReturnValue = _notificationBusinessObject.InsertNotification(notification);

                        // Database insert success message
                        MessageBox.Show("Your inventory update request was successful.", "Inventory Update",
                                    MessageBoxButtons.OK, MessageBoxIcon.Information);

                    }
                    else
                    {
                        // Database insert failure message
                        MessageBox.Show("Your inventory update request has failed, Please try again.", "Inventory Update",
                                    MessageBoxButtons.OK, MessageBoxIcon.Hand);
                    }

                    // After transaction is complete, re-run original search and refresh search results.
                    btn_SearchSubmit.PerformClick();
                    tbx_OrderSold.Text = "";
                 }

                 // Show error if user didn't enter an INT
                catch (Exception)
                {
                    MessageBox.Show("You entered an invalid order ID.  Please try again", "Invalid Number",
                                    MessageBoxButtons.OK, MessageBoxIcon.Hand);
                    return;
                }
            }
        }
        // INVENTORY REQUEST submit button click event
        private void btn_InventoryRequest_Click(object sender, EventArgs e)
        {
            // Verify all fields are NOT null
            if ((tbx_CatalogId.Text != null) && (tbx_Quantity.Text != null))
            {
                try
                {

                    DateTime time = DateTime.Now;   // Variable to be included in notification message
                    int quantity = Convert.ToInt32(tbx_Quantity.Text);  // validate INT input from user
                    int notificationReturnValue;    // Variable to hold return value from database insert
                    BusinessObjects _businessObject = new BusinessObjects();

                    // Get the catalog information for the item that needs to be ordered.  Some of the catalog item info
                    // will be populated into the notification message string
                    CatalogItem catalogItem = _businessObject.GetCatalogItemByCatalogItemId(new Guid(tbx_CatalogId.Text));

                    // Populate notification fields manually
                    Notification notification = new Notification();
                    notification.OrderId = new Guid(tbx_OrderId.Text);
                    notification.NotificationId = Guid.NewGuid();
                    notification.NotificationMessage = ("Please order inventory item --> Item Name: " +
                    catalogItem.ItemName.ToString() + ",  Manufacturer Name: " + catalogItem.Manufacturer.ToString() +
                    ",  Date: " + time.ToString() + ",  Quantity: " + quantity.ToString()) + ", Catalog ID: " +
                    catalogItem.CatalogItemId.ToString();
                    notification.NotificationType = NotificationType.RestockItem;
                    notification.IsRead = false;
                    notification.PermissionScope = Permission.StockClerk;

                    // Insert notification into database table
                    notificationReturnValue = _businessObject.InsertNotification(notification);

                    if (notificationReturnValue == 0)
                    {
                        // Database insert success message
                        MessageBox.Show("Your stock request was sent successfully.", "Stock Request",
                                           MessageBoxButtons.OK, MessageBoxIcon.Information);
                        tbx_OrderId.Clear();
                        tbx_CatalogId.Clear();
                        tbx_Quantity.Clear();
                    }
                    else
                    {
                        // Database insert failure message
                        MessageBox.Show("Your stock request failed.  Please try again", "Stock Request",
                                            MessageBoxButtons.OK, MessageBoxIcon.Hand);
                        return;
                    }
                }
                catch (Exception)
                {
                    // Failure message
                    MessageBox.Show("Your stock request failed.  Please make sure that you filled out all request fields with appropriate information", "Stock Request",
                                        MessageBoxButtons.OK, MessageBoxIcon.Hand);
                }
            }

            else
            {
                // Error message due to empty fields in stock request form
                MessageBox.Show("Your stock request is not complete.  Please fill out all fields try again", "Stock Request",
                                    MessageBoxButtons.OK, MessageBoxIcon.Hand);
            }
        }
        private void btn_clerknotifysubmit_Click(object sender, EventArgs e)
        {
            //Validate order id.
            Guid orderId;
            if (!ApplicationObjects.TryParseGuid(tbox_clerknotifyid.Text))
            {
                MessageBox.Show("Invalid order ID format. No update occurred.",
                    "Invalid Input", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                return;
            }
            else
            {
                orderId = new Guid(tbox_clerknotifyid.Text);
            }

            Order order = ApplicationObjects.GetOrder(orderId);
            if (order == null)
            {
                MessageBox.Show("Order ID does not exist. No update occurred.",
                    "Invalid Input", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                return;
            }

            //Validate that at least one of the radio button is selected.
            if (!rbtn_NotifyEnRoute.Checked && !rbtn_NotifyDelivered.Checked)
            {
                MessageBox.Show("Either the \"En Route\" or the \"Delivered\" radio button must be selected. No update occurred.",
                    "Invalid Input", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                return;
            }

            //Prevent decrementing if status was already maked as delivered.
            if ((order.OrderStatus != OrderStatus.Delivered) && (rbtn_NotifyDelivered.Checked))
            {
                string message = "Marking this order as \"Delivered\" will set the status for all items in the order " +
                    "and decrement the available number in stock. Are you sure you'd like to mark this order \"Delivered\"?";
                DialogResult result = MessageBox.Show(message, "Confirmation", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
                if (result == DialogResult.Cancel)
                    return;

                //Update order status and submit notifications
                order.OrderStatus = OrderStatus.Delivered;
                ApplicationObjects.UpdateOrderStatusWithNotification(order, (Permission)userAccount.PermissionSet.GetHighestPermission());

                /*************************************/
                //TODO: Re-think this location for the deletes. Should the stock clerk mark delivered to the customer or
                //just to the engraver. If to the engraver, then should the engraver handle the inventory decrementation?
                /*************************************/

                //Delete from inventory because the material has been delivered.
                //ApplicationObjects.RemoveOrderItemsFromInventory(order);
            }
            //Do nothing if En Route was already set.
            else if ((order.OrderStatus != OrderStatus.EnRoute) && (rbtn_NotifyEnRoute.Checked))
            {
                //Validate order id.
                if (!ApplicationObjects.TryParseGuid(tbox_clerknotifyid.Text))
                {
                    MessageBox.Show("Invalid order ID format. No update occurred.",
                        "Invalid Input", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    return;
                }
                else
                {
                    //Update order status and submit notifications
                    order.OrderStatus = OrderStatus.EnRoute;

                    ApplicationObjects.UpdateOrderStatusWithNotification(order, (Permission)userAccount.PermissionSet.GetHighestPermission());
                    BusinessObjects _notificationBusinessObject = new BusinessObjects();

                    int notificationReturnValue;
                    Notification notification = new Notification();
                    notification.OrderId = new Guid(tbox_clerknotifyid.Text);
                    notification.NotificationId = Guid.NewGuid();
                    notification.NotificationMessage = ("Inventory item has been ordered and is en route : " +
                                           inventoryItems[cbx_ResultsList.SelectedIndex].InventoryItemId.ToString());
                    notification.NotificationType = NotificationType.EnRoute;
                    notification.IsRead = false;
                    notification.PermissionScope = Permission.WorkSpecialist;

                    // INSERT notification to database
                    notificationReturnValue = _notificationBusinessObject.InsertNotification(notification);

                    if (notificationReturnValue == 0)
                    {
                        /* Database (inventory update) & (notification insert) success message.
                         This message displays if the inventory database update was successful,
                         and the notificaiton insert was successfull*/
                        MessageBox.Show("Your inventory update request was successful.  A notification has been sent to the Work Specialist", "Inventory Update",
                                    MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                    else
                    {
                        /* Database (inventory update SUCCESS) but (notification insert FAILURE) message.
                        This message displays if the inventory database update was successful,
                        but the notification failed for some reason*/
                        MessageBox.Show("Your inventory update request was successful.  However, an error prevented a" +
                            "notification from being sent to the Work Specialist", "Inventory Update",
                                    MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                }
            }
        }
        // ORDER METHODS
        public static int UpdateOrderStatusWithNotification(Order order, Enumeration.Permission senderPermissionScope)
        {
            int returnValue = 1;

            BusinessObjects _businessObjects = new BusinessObjects();
            returnValue = _businessObjects.UpdateOrder(order);

            if (returnValue == 1)
                return returnValue;

            Notification notification = new Notification
            {
                NotificationId = Guid.NewGuid(),
                IsRead = false,
                OrderId = order.OrderId
            };

            string message = "";
            switch (order.OrderStatus)
            {
                case Enumeration.OrderStatus.WorkComplete:
                    message = "Order ID: " + order.OrderId.ToString() + " - STATUS CHANGE = Work Complete";
                    notification.NotificationMessage = message;
                    notification.NotificationType = Enumeration.NotificationType.WorkComplete;
                    notification.PermissionScope = Enumeration.Permission.OperationsManager;
                    returnValue = _businessObjects.InsertNotification(notification);
                    break;
                case Enumeration.OrderStatus.EnRoute:
                    message = "Order ID: " + order.OrderId.ToString() + " - STATUS CHANGE = En Route";
                    notification.NotificationMessage = message;
                    notification.NotificationType = Enumeration.NotificationType.EnRoute;
                    notification.PermissionScope = Enumeration.Permission.WorkSpecialist;
                    returnValue = _businessObjects.InsertNotification(notification);
                    break;
                case Enumeration.OrderStatus.Delivered:
                    if (senderPermissionScope == Enumeration.Permission.SalesPerson)
                    {
                        message = "Order ID: " + order.OrderId.ToString() + " - STATUS CHANGE = Delivered";
                        notification.NotificationMessage = message;
                        notification.NotificationType = Enumeration.NotificationType.Delivered;
                        notification.PermissionScope = Enumeration.Permission.OperationsManager;
                        returnValue = _businessObjects.InsertNotification(notification);
                    }
                    else if (senderPermissionScope == Enumeration.Permission.StockClerk)
                    {
                        message = "Order ID: " + order.OrderId.ToString() + " - STATUS CHANGE = Delivered";
                        notification.NotificationMessage = message;
                        notification.NotificationType = Enumeration.NotificationType.Delivered;
                        notification.PermissionScope = Enumeration.Permission.WorkSpecialist;
                        returnValue = _businessObjects.InsertNotification(notification);
                    }
                    break;
                case Enumeration.OrderStatus.Complete:
                    message = "Order ID: " + order.OrderId.ToString() + " - STATUS CHANGE = Order Complete";
                    notification.NotificationMessage = message;
                    notification.NotificationType = Enumeration.NotificationType.OrderComplete;
                    notification.PermissionScope = Enumeration.Permission.SalesPerson;
                    returnValue = _businessObjects.InsertNotification(notification);
                    break;
                case Enumeration.OrderStatus.FailedValidation:
                    message = "Order ID: " + order.OrderId.ToString() + " - STATUS CHANGE = Failed Validation";
                    notification.NotificationMessage = message;
                    notification.NotificationType = Enumeration.NotificationType.FailedQualityControl;
                    notification.PermissionScope = Enumeration.Permission.WorkSpecialist;
                    returnValue = _businessObjects.InsertNotification(notification);
                    break;
            }

            return returnValue;
        }
        public static void RemoveInventoryItemFromInventory(InventoryItem item)
        {
            BusinessObjects _businessObjects = new BusinessObjects();
            int returnValue;
            returnValue = _businessObjects.DeleteInventoryItem(item);
            DisplayDataStatus(returnValue);
            if (returnValue == 0)
            {
                int notificationReturnValue;
                BusinessObjects _notificationBusinessObject = new BusinessObjects();
                Notification notification = new Notification();
                notification.OrderId = item.OrderId;
                notification.NotificationId = Guid.NewGuid();
                notification.NotificationMessage = ("Inventory item is en route : " +
                                       item.InventoryItemId.ToString());
                notification.NotificationType = BusinessLayer.Enumerations.NotificationType.EnRoute;
                notification.IsRead = false;
                notification.PermissionScope = BusinessLayer.Enumerations.Permission.WorkSpecialist;

                // INSERT notification to database
                notificationReturnValue = _notificationBusinessObject.InsertNotification(notification);

                if(notificationReturnValue == 0)
                {
                    MessageBox.Show("A notification has been sent to the Work specialist", "Item Sent to Work Specialist", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                else if(notificationReturnValue == 1)
                {
                    MessageBox.Show("There was a problem sending a notification to the Work Specialist - please notify them manually that the item is on the way", "Item Sent to Work Specialist", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
        }
        public static int NewNotification(Notification notification)
        {
            BusinessObjects _businessObjects = new BusinessObjects();
            int returnValue = _businessObjects.InsertNotification(notification);

            return returnValue;
        }