Beispiel #1
0
        /// <summary>
        /// Saves user to database, if user is new, assings ID to them
        /// </summary>
        /// <param name="dbConnection">KaRaFa database connection</param>
        public void SaveToDatabase(Database.DatabaseConnection dbConnection)
        {
            if (string.IsNullOrEmpty(this.ID))
            {
                // Insert new user to database
                InsertUserToDatabase(dbConnection);
                return;
            }

            // Search user to update
            string query = dbConnection.CreateSelectCommandText("Uzivatele", null, string.Format("ID = '{0}'", this.ID), null);

            DataSet dataSet = dbConnection.ExecuteSelectQuery(query);

            // Not find - unlikely to happend
            if (dataSet == null || dataSet.Tables.Count == 0 || dataSet.Tables[0].Rows.Count == 0)
            {
                InsertUserToDatabase(dbConnection);
                return;
            }

            // Old user definition
            DataRow oldDefinition = dataSet.Tables[0].Rows[0];

            List<string> columns = new List<string>();
            List<string> newValues = new List<string>();

            // Browse all columns
            foreach (DataColumn column in oldDefinition.Table.Columns)
            {
                string columnName = column.Caption;
                object oldValue = oldDefinition[columnName];
                object currentValue = this.definition[columnName];

                // Save modified columns
                if (!AreEqual(oldValue, currentValue))
                {
                    columns.Add(columnName);
                    newValues.Add((currentValue == null)
                        ? "NULL"
                        : column.DataType.FullName.Equals("System.Boolean")
                            || column.DataType.FullName.Equals("System.String")
                                ? string.Format("'{0}'", currentValue)
                                : currentValue.ToString()
                    );
                }
            }

            // If user was changed, update them in database
            if (columns.Count > 0)
            {
                UpdateUserInDatabase(dbConnection, columns.ToArray<string>(), newValues.ToArray<string>());
                //this.definition = oldDefinition;
            }
        }
Beispiel #2
0
        /// <summary>
        /// Inserts user in database. Assigns them ID (max(ID) + 1 form users)
        /// </summary>
        /// <param name="dbConnection">KaRaFa Database connection</param>
        private void InsertUserToDatabase(Database.DatabaseConnection dbConnection)
        {
            // Creates query to get new id
            string maxIdQuery = dbConnection.CreateSelectCommandText(
                "Uzivatele",
                new string[] { "max(ID) + 1" },
                null,
                null
            );

            // Get id
            string id = dbConnection.ExecuteSqlScalar(maxIdQuery).ToString();

            // Create columns field to save
            string[] columns = new string[] {
                "ID",
                "UzivatelskeJmeno",
                "Heslo",
                "jeAdmin",
                "JeStavbyvedouci",
                "JeRozpoctar"
            };

            // Create values field to save
            string[] values = new string[]{
                id,
                this.userName,
                this.password,
                this.IsAdmin.ToString(),
                this.IsConstructionManager.ToString(),
                this.IsCalculationManager.ToString()
            };

            // Save query
            string query = dbConnection.CreateNonQueryCommandText(
                Database.NonQueryCommandType.Insert,
                "Uzivatele",
                columns,
                values,
                null
            );

            // Save user to database
            dbConnection.ExecuteSqlNonQuery(query);
        }
Beispiel #3
0
        /// <summary>
        /// Loads analysis for specified <see cref="Karafa.Modules.Import.MainItem"/>.
        /// </summary>
        /// <param name="databaseConnection">Connectio to database</param>
        /// <param name="id">ID of Mainitem</param>
        public void LoadAnalysisFromDatabase(Database.DatabaseConnection databaseConnection, string id)
        {
            string query = databaseConnection.CreateSelectCommandText(
                 Properties.Resources.VIEW_ANALYSIS,
                 null,
                 string.Format("CenikID = '{0}'", id),
                 null
            );

            DataSet dataSet = databaseConnection.ExecuteSelectQuery(query);

            if (dataSet == null || dataSet.Tables.Count == 0 || dataSet.Tables[0].Rows.Count == 0)
                return; // No analysis found

            // Create proepr items from loaded rows and add them to analysis
            foreach (DataRow row in dataSet.Tables[0].Rows)
            {
                string itemType = (string)row["Typ"];
                string relatedItemId = (string)row["PolozkaID"];

                object quantity = row["Mnozstvi"];
                decimal quantityPerUnit =
                    (quantity == null || quantity is System.DBNull)
                    ? 1
                    : Utilities.StringUtils.ParseDecimalFromString(quantity.ToString(), 1);

                object mainMU = row["CenikMJ"];
                string mainMeasuerUnit = (mainMU == null || mainMU is System.DBNull) ? string.Empty : mainMU.ToString();

                object itemMU = row["PolozkaMJ"];
                string itemMeasureUnit = (itemMU == null || itemMU is System.DBNull) ? string.Empty : itemMU.ToString();

                string usageMeasureUnit = Utilities.StringUtils.GetUsageMeasureUnit(
                            itemMeasureUnit,
                            mainMeasuerUnit
                        ); ;

                // Create proper item
                switch (itemType)
                {
                    case "Cenik":
                        break; // Main item is not part of its own analysis

                    case "Dodavka":
                        DeliveryItem delivery = new DeliveryItem(
                            GetRelatedItemByAnalysis(
                                databaseConnection,
                                Properties.Resources.VIEW_DELIVERIES,
                                relatedItemId
                            )
                        );
                        delivery.Usage = quantityPerUnit;
                        delivery.UsageMeasureUnit = usageMeasureUnit;

                        AddAnalysisItem(delivery);
                        break;

                    case "Material":
                        MaterialItem material = new MaterialItem(
                            GetRelatedItemByAnalysis(
                                databaseConnection,
                                Properties.Resources.VIEW_MATERIALS,
                                relatedItemId
                            )
                        );
                        material.Usage = quantityPerUnit;
                        material.UsageMeasureUnit = usageMeasureUnit;

                        AddAnalysisItem(material);
                        break;

                    case "Prace":
                        object work = row["PopisPrace"];
                        string workDescritpion = (work == null || work is System.DBNull) ? string.Empty : work.ToString();

                        WorkItem workitem = new WorkItem(
                            GetRelatedItemByAnalysis(
                                databaseConnection,
                                Properties.Resources.VIEW_WORKS,
                                relatedItemId
                            )
                        );
                        workitem.Usage = quantityPerUnit;
                        workitem.WorkDescription = workDescritpion;
                        workitem.UsageMeasureUnit = usageMeasureUnit;

                        AddAnalysisItem(workitem);
                        break;

                    case "Stroj":
                        MachineItem machine = new MachineItem(
                            GetRelatedItemByAnalysis(
                                databaseConnection,
                                Properties.Resources.VIEW_MACHINES,
                                relatedItemId
                            )
                        );
                        machine.Usage = quantityPerUnit;
                        machine.UsageMeasureUnit = usageMeasureUnit;

                        AddAnalysisItem(machine);
                        break;

                    default:
                        throw new ArgumentException(
                            string.Format(
                                Properties.Resources.ERROR_WRONG_ANALISYS_ITEM_TYPE_FORMATED,
                                itemType
                            )
                        );
                }
            }
        }