public bool CheckForDuplicateNames <T>(IEnumerable <T> items, Func <T, string> nameExtractor, string whatItemsAre)
        {
            var grouped = from v in items
                          group v by nameExtractor(v).ToLowerInvariant()
                          into lowerCaseGrouped
                              where lowerCaseGrouped.Count() > 1
                          select Tuple.Create(lowerCaseGrouped.Key, lowerCaseGrouped.Count());

            var any = false;

            foreach (var duplicate in grouped)
            {
                any = true;
                ErrorCache.AddError($"There are {duplicate.Item2} {whatItemsAre} with name '{duplicate.Item1}'");
            }
            return(any);
        }
        public void CheckNumber(string value, string FieldName)
        {
            int number;

            if (!string.IsNullOrWhiteSpace(value))
            {
                if (!int.TryParse(value, out number))
                {
                    messageCollection.addMessage(new Message()
                    {
                        Context      = "ValidationHandler",
                        ErrorCode    = ErrorCache.NumberError,
                        ErrorMessage = FieldName + ErrorCache.getErrorMessage(ErrorCache.NumberError),
                        isError      = true,
                        LogType      = Enums.LogType.Exception
                    });
                }
            }
        }
示例#3
0
        public override void DoFillGridAction()
        {
            SQLHandler sql = new SQLHandler();

            dt = sql.ExecuteSqlReterieve(SqlCache.GetSql("GetMedicines"));
            MessageCollection.copyFrom(sql.Messages);

            if (dt == null || dt.Rows.Count <= 0)
            {
                MessageCollection.addMessage(new Message()
                {
                    Context      = "MedicineHandler",
                    ErrorCode    = ErrorCache.RecordsNotFound,
                    ErrorMessage = ErrorCache.getErrorMessage(ErrorCache.RecordsNotFound),
                    isError      = true,
                    LogType      = Enums.LogType.Exception,
                    WebPage      = "Medicine"
                });
            }
        }
        public bool ValidatePackageToLoad(Package package)
        {
            if (this.package != null)
            {
                throw new InvalidOperationException("This loader already has a package.");
            }

            // Store details of the package
            this.package = package;

            // Check for any reserved package names (etc.)
            if (package.Id.StartsWith(Constants.PackageId))
            {
                ErrorCache.AddError($"Package can't start with the reserved name {Constants.PackageManagerIdentity}");
            }

            // Check the variables and load them
            CheckForDuplicateNames(package.Variables, v => v.Name, "Variables");
            foreach (var variable in package.Variables)
            {
                variable.PackageId = package.Id;
                Scope.Store(variable);
            }

            // Check the datasets and load them
            CheckForDuplicateNames(package.DataSets, d => d.Name, "Datasets");

            var validator = new DataSetApiValidator
            {
                PackageId  = package.Id,
                Scope      = Scope,
                ErrorCache = ErrorCache
            };

            foreach (var dataSet in package.DataSets)
            {
                Jobs.AddRange(validator.DetermineJobs(dataSet));
            }

            return(ErrorCache.Count == 0);
        }
示例#5
0
        public int RetrieveMSSQLIdValue()
        {
            int i = -1;

            Cm.CommandText = "select @@identity as id";

            if (data != null)
            {
                try
                {
                    data.Close();
                    data = null;
                }
                catch
                {}
            }

            try
            {
                data = Cm.ExecuteReader();

                if (data.HasRows)
                {
                    data.Read();
                    i = System.Convert.ToInt32(data[0].ToString());
                }
            }
            catch (Exception e)
            {
                this.Messages.Items.Add(new Message(MessageTypeCache.Error, ErrorCache.UnableToExecuteSQL,
                                                    Prefix + ".RunSQLRetrieve: " + ErrorCache.GetDescription(ErrorCache.UnableToExecuteSQL)
                                                    + "; Reason: " + e.Message, e.StackTrace, 1));
            }
            finally
            {
                data.Close();
                data = null;
            }
            Cm.CommandText = "";
            return(i);
        }
示例#6
0
        /// <summary>
        /// Run an SQL statement that does provide a return resultset
        /// </summary>
        /// <param name="sql"></param>
        public object RunSQLScalar(String sql)
        {
            Cm.CommandText = sql;

            this.Messages.Items.Add(new Message(MessageTypeCache.Message, ErrorCache.NoErrorsOccured,
                                                "Sql : " + sql, null));

            object obj = null;

            try
            {
                obj = Cm.ExecuteScalar();
            }
            catch (Exception e)
            {
                this.Messages.Items.Add(new Message(MessageTypeCache.Error, ErrorCache.UnableToExecuteSQL,
                                                    Prefix + ".RunSQLScalar: " + ErrorCache.GetDescription(ErrorCache.UnableToExecuteSQL)
                                                    + "; Reason: " + e.Message, e.StackTrace, 1));
            }
            Cm.CommandText = "";
            return(obj);
        }
        public override void DoFillBackPanelAction(int ID)
        {
            SQLHandler sql = new SQLHandler(new ArrayList()
            {
                ID
            });

            dt = sql.ExecuteSqlReterieve(SqlCache.GetSql("GetUser"));
            MessageCollection.copyFrom(sql.Messages);

            if (dt == null || dt.Rows.Count <= 0)
            {
                MessageCollection.addMessage(new Message()
                {
                    Context      = "UsersHandler",
                    ErrorCode    = ErrorCache.RecordsNotFound,
                    ErrorMessage = ErrorCache.getErrorMessage(ErrorCache.RecordsNotFound),
                    isError      = true,
                    LogType      = Enums.LogType.Exception,
                    WebPage      = "Users"
                });
            }
        }
示例#8
0
        public DataTable GetMedicine(PharmacyInventoryModel model)
        {
            SQLHandler sql = new SQLHandler(new ArrayList()
            {
                model.PharmacyID, model.MedicineID
            });

            dt = sql.ExecuteSqlReterieve(SqlCache.GetSql("GetPOSMedicine"));
            MessageCollection.copyFrom(sql.Messages);

            if (dt == null || dt.Rows.Count <= 0)
            {
                MessageCollection.addMessage(new Message()
                {
                    Context      = "PharmacyPOSHandler",
                    ErrorCode    = ErrorCache.RecordsNotFound,
                    ErrorMessage = ErrorCache.getErrorMessage(ErrorCache.RecordsNotFound),
                    isError      = true,
                    LogType      = Enums.LogType.Exception,
                    WebPage      = "PharmacyPOS"
                });
            }
            return(dt);
        }
示例#9
0
        protected void txt_qrcode_TextChanged(object sender, EventArgs e)
        {
            if (!string.IsNullOrWhiteSpace(txt_qrcode.Text))
            {
                var model = MapModelForQRCode();
                PharmacyPOSHandler handler = new PharmacyPOSHandler();
                var dt = handler.GetMedicine(model);
                MessageCollection.copyFrom(handler.MessageCollection);

                if (!MessageCollection.isErrorOccured)
                {
                    if (ViewState != null && ViewState[Enums.SessionName.POSdetail.ToString()] != null &&
                        ViewState[Enums.SessionName.MedicineDetail.ToString()] != null)
                    {
                        DataRow ValueRow = dt.Rows[0];
                        string  qrCode   = ValueRow["QRCode"].ToString();
                        medQuantity = (Dictionary <string, int>)ViewState[Enums.SessionName.MedicineDetail.ToString()];
                        if (medQuantity.ContainsKey(qrCode))
                        {
                            if (medQuantity[qrCode] == 0)
                            {
                                MessageCollection.addMessage(new Message()
                                {
                                    Context      = "PharmacyPOS",
                                    LogType      = Enums.LogType.Exception,
                                    WebPage      = "PharmacyPOS",
                                    isError      = true,
                                    ErrorCode    = ErrorCache.NoQuantityLeftError,
                                    ErrorMessage = ErrorCache.getErrorMessage(ErrorCache.NoQuantityLeftError)
                                });

                                MessageCollection.PublishLog();
                                lbl_err.Text    = MessageCollection.Messages[MessageCollection.Messages.Count - 1].ErrorMessage;
                                lbl_err.Visible = true;
                            }
                            else
                            {
                                medQuantity[qrCode] = medQuantity[qrCode] - 1;
                            }
                        }
                        else
                        {
                            medQuantity.Add(qrCode, Convert.ToInt32(ValueRow["Quantity"]) - 1);
                        }

                        if (!MessageCollection.isErrorOccured)
                        {
                            DataTable POSdt = (DataTable)ViewState[Enums.SessionName.POSdetail.ToString()];
                            DataRow   dr    = POSdt.NewRow();

                            dr["ID"]         = ValueRow["ID"];
                            dr["Name"]       = ValueRow["Name"];
                            dr["BatchNo"]    = ValueRow["BatchNo"];
                            dr["ExpiryDate"] = ValueRow["ExpiryDate"];
                            dr["MfgDate"]    = ValueRow["MfgDate"];
                            dr["Price"]      = ValueRow["Price"];
                            dr["QRCode"]     = ValueRow["QRCode"];
                            POSdt.Rows.Add(dr);
                            gridView.DataSource = POSdt;
                            gridView.DataBind();
                            CalculateSum(POSdt);
                        }
                    }
                    else
                    {
                        if (Convert.ToInt32(dt.Rows[0]["quantity"]) != 0)
                        {
                            ViewState[Enums.SessionName.POSdetail.ToString()] = dt;
                            medQuantity.Add(dt.Rows[0]["qrcode"].ToString(), Convert.ToInt32(dt.Rows[0]["quantity"]) - 1);
                            ViewState[Enums.SessionName.MedicineDetail.ToString()] = medQuantity;
                            gridView.DataSource = dt;
                            gridView.DataBind();
                            CalculateSum(dt);
                        }
                        else
                        {
                            MessageCollection.addMessage(new Message()
                            {
                                Context      = "PharmacyPOS",
                                LogType      = Enums.LogType.Exception,
                                WebPage      = "PharmacyPOS",
                                isError      = true,
                                ErrorCode    = ErrorCache.NoQuantityLeftError,
                                ErrorMessage = ErrorCache.getErrorMessage(ErrorCache.NoQuantityLeftError)
                            });

                            MessageCollection.PublishLog();
                            lbl_err.Text    = MessageCollection.Messages[MessageCollection.Messages.Count - 1].ErrorMessage;
                            lbl_err.Visible = true;
                        }
                    }
                }
            }

            txt_qrcode.Text = "";
            txt_qrcode.Focus();
        }
示例#10
0
 public void TearDown()
 {
     _cache = null;
 }
示例#11
0
 public void Setup()
 {
     _cache = new ErrorCache();
 }