public int GetSerialsFromPartDest(string operatorCode, string destination, string part, decimal quantity)
        {
            var dt     = new ObjectParameter("TranDT", typeof(DateTime));
            var result = new ObjectParameter("Result", typeof(int));

            try
            {
                using (var context = new MONITOREntities())
                {
                    context.usp_CreateRma_GetSerialsFromPartDest(operatorCode, destination, part, quantity, dt, result);

                    var query = from s in context.SerialsQuantitiesToAutoRMA_RTV
                                select s;

                    foreach (var item in query)
                    {
                        _serialQuantityDataModel = new SerialQuantityDataModel
                        {
                            Serial   = item.Serial,
                            Quantity = Math.Round(item.Quantity, 2)
                        };
                        SerialsList.Add(_serialQuantityDataModel);
                    }
                }
            }
            catch (Exception ex)
            {
                string error = (ex.InnerException == null) ? ex.Message : ex.InnerException.Message;
                _messages.Message = String.Format("Failed to create serials for part {0}.  Error: {1}", part, error);
                _messages.ShowDialog();
                return(0);
            }
            return(1);
        }
        public int ImportDataFromSpreadsheet()
        {
            SerialsList.Clear();

            try
            {
                var format = DataFormats.CommaSeparatedValue;

                // Read the CSV
                var dataObject = Clipboard.GetDataObject();
                Debug.Assert(dataObject != null, "dataObject != null");
                var stream = (Stream)dataObject.GetData(format);
                if (stream == null)
                {
                    _messages.Message = "Please copy spreadsheet data.";
                    _messages.ShowDialog();
                    return(0);
                }
                var    encoding = new UTF8Encoding();
                var    reader   = new StreamReader(stream, encoding);
                string data     = reader.ReadToEnd();

                var rows = data.Split('\r');

                // Loop through spreadsheet rows
                foreach (var rowRaw in rows)
                {
                    var row = rowRaw.Replace("\n", "");
                    if (row == "\0")
                    {
                        break;
                    }

                    string serial   = row.Split(',')[0];
                    string quantity = row.Split(',')[1];

                    int iSerial   = Convert.ToInt32(serial);
                    int iQuantity = Convert.ToInt32(quantity);

                    _serialQuantityDataModel = new SerialQuantityDataModel {
                        Serial = iSerial, Quantity = iQuantity
                    };
                    SerialsList.Add(_serialQuantityDataModel);
                }
            }
            catch (Exception ex)
            {
                string error = (ex.InnerException == null) ? ex.Message : ex.InnerException.Message;
                _messages.Message =
                    String.Format("Error at ImportDataFromSpreadsheet: {0}  Make sure each serial has a quantity.",
                                  error);
                _messages.ShowDialog();
                return(0);
            }
            return(1);
        }
        public void GetSerialsFromPartDest(string operatorCode, string destination, string part, decimal quantity, out string error)
        {
            var dt     = new ObjectParameter("TranDT", typeof(DateTime));
            var result = new ObjectParameter("Result", typeof(int));

            error = "";
            try
            {
                using (var context = new MONITOREntities())
                {
                    context.usp_CreateRma_GetSerialsFromPartDest(operatorCode, destination, part, quantity, dt, result);

                    var query = from s in context.SerialsQuantitiesToAutoRMA_RTV
                                where s.OperatorCode == operatorCode
                                select s;

                    foreach (var item in query)
                    {
                        _serialQuantityDataModel = new SerialQuantityDataModel
                        {
                            Serial   = item.Serial,
                            Quantity = Math.Round(item.Quantity, 2)
                        };

                        // Querying the SerialsQuantitiesToAutoRMA_RTV table every time will duplicate List items,
                        //   so only add an item if it isn't already in the List.
                        if (!SerialsList.Any(x => x.Serial == item.Serial))
                        {
                            SerialsList.Add(_serialQuantityDataModel);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                string errorMsg = (ex.InnerException == null) ? ex.Message : ex.InnerException.Message;
                error = String.Format("Failed to create serials for part {0}.  Error: {1}", part, errorMsg);
            }
        }
        private int GetSerialsList()
        {
            _serialQuantityList.Clear();
            bool serialEntered = false;

            foreach (DataGridViewRow dr in dgvSerialsQuantities.Rows)
            {
                if (!serialEntered)
                {
                    if ((dr.Cells[0].Value == null || dr.Cells[0].Value.ToString() == ""))
                    {
                        Cursor.Current    = Cursors.Default;
                        _messages.Message = "At least one serial and quantity must be entered.";
                        _messages.ShowDialog();
                        return(0);
                    }
                    serialEntered = true;
                }
                if (dr.Cells[0].Value == null)
                {
                    break;                             // We have serials, and the end of the entered serials has been reached
                }
                string serial   = dr.Cells[0].Value.ToString();
                string quantity = (dr.Cells[1].Value != null) ? dr.Cells[1].Value.ToString() : "";
                if (quantity == "")
                {
                    Cursor.Current    = Cursors.Default;
                    _messages.Message = string.Format("A quantity needs to be entered for serial {0}.", serial);
                    _messages.ShowDialog();
                    return(0);
                }

                int ser;
                try
                {
                    ser = Convert.ToInt32(serial);
                }
                catch (Exception)
                {
                    Cursor.Current    = Cursors.Default;
                    _messages.Message = string.Format("Invalid serial number found: {0}.", serial);
                    _messages.ShowDialog();
                    return(0);
                }

                // Check for duplicates
                if (_serialQuantityList.Exists(x => x.Serial == ser))
                {
                    continue;
                }


                decimal qty;
                try
                {
                    qty = Convert.ToInt32(quantity);
                }
                catch (Exception)
                {
                    Cursor.Current    = Cursors.Default;
                    _messages.Message = string.Format("Invalid quantity found for serial {0}.", serial);
                    _messages.ShowDialog();
                    return(0);
                }

                // Create list to process and send forward
                _serialQuantityDataModel = new SerialQuantityDataModel {
                    Quantity = qty, Serial = ser
                };
                _serialQuantityList.Add(_serialQuantityDataModel);
            }
            return(1);
        }