예제 #1
0
        protected void SaveButton_Click(object sender, EventArgs e)
        {
            if (this.DictionaryTreeID == new Guid("316C6BC7-D883-44C8-AAE0-602F49C73595"))
            {
                Guid _dictP1STID = Guid.Empty;
                Guid _dictGOSTID = Guid.Empty;
                string PN1 = string.Empty;
                string PN2_2 = string.Empty;
                EditControl superfieldControl = null;
                EditControl superfieldControl_ua = null;
                foreach (RepeaterItem item in GeneralPropertyRepeater.Items)
                {
                    string col_name = (item.FindControl("HiddenID") as HiddenField).Value;
                    if (col_name.ToUpper() == "PN1")
                    {
                        EditControl editControl = item.FindControl("PropertyValueAdv") as EditControl;
                        if (!editControl.Validate()) return;
                        PN1 = editControl.Value.ToString().Trim();
                    }
                    if (col_name.ToUpper() == "PN2_2")
                    {
                        EditControl editControl = item.FindControl("PropertyValueAdv") as EditControl;
                        if (!editControl.Validate()) return;
                        PN2_2 = editControl.Value.ToString().Trim();
                    }
                    if (col_name.ToLower() == "superpole")
                    {
                        superfieldControl = item.FindControl("PropertyValueAdv") as EditControl;
                    }
                    if (col_name.ToLower() == "superpole_ua")
                    {
                        superfieldControl_ua = item.FindControl("PropertyValueAdv") as EditControl;
                    }
                }

                foreach (RepeaterItem item in DictionaryPropertyRepeater.Items)
                {
                    if (item.ItemType == ListItemType.Item || item.ItemType == ListItemType.AlternatingItem)
                    {
                        Guid dictId = new Guid((item.FindControl("HiddenTreeID") as HiddenField).Value);
                        if (dictId == new Guid("98C60832-A66C-4A84-BC90-EB83EE43C4C9"))
                        {
                            _dictP1STID = new Guid((item.FindControl("HiddenID") as HiddenField).Value);
                        }
                        if (dictId == new Guid("BB4BCA91-C56D-4746-B5C2-C7CF29596F3D"))
                        {
                            _dictGOSTID = new Guid((item.FindControl("HiddenID") as HiddenField).Value);
                        }
                    }
                }

               using (DictionaryProvider provider = new DictionaryProvider())
               {
                   string superfield = provider.GetNomenSuperFieldValue(_dictP1STID, _dictGOSTID, PN1, PN2_2);
                   string superfield_ua = provider.GetNomenSuperFieldValueUa(_dictP1STID, _dictGOSTID, PN1, PN2_2);

                   if (superfieldControl != null) superfieldControl.Value = superfield;
                   if (superfieldControl_ua != null )
                   {
                       if (String.IsNullOrEmpty(superfieldControl_ua.Value.ToString().Trim()))
                       {
                           // если поле с "укр. суперполем" пусто, устанавливаем расчитанное значение
                           superfieldControl_ua.Value = superfield_ua;
                       }
                   }

                   #region Check [superpole] && [pn1] for uniqueness
                   // Проверка поля [superpole] на уникальность
                   List<_dictNomen> list = provider._dictNomens.Where(d => d.superpole.Trim() == superfield).ToList();
                   if (this.IsNew && !this.IsNewAdded && list.Count > 0)
                   {

                       UniqueValueValidator.ErrorMessage = string.Format("Значение Общ. наименование должно быть уникальным ( {0} )", superfield);
                       UniqueValueValidator.IsValid = false;
                       return;
                   }
                   else if (list.Count > 0 && list.Where(l => l.ID == this.RequestDictionaryEntityID).Count() == 0)
                   {
                       UniqueValueValidator.ErrorMessage = string.Format("Значение Общ. наименование должно быть уникальным ( {0} )", superfield);
                       UniqueValueValidator.IsValid = false;
                       return;
                   }

                   // Проверка поля [pn1] на уникальность
                   List<_dictNomen> listPn1 = provider._dictNomens.Where(d => d.pn1.Trim() == PN1).ToList();
                   if (this.IsNew && !this.IsNewAdded && listPn1.Count > 0)
                   {
                       UniqueValueValidator.Text = string.Format("! Значение поля [Обозначение] должно быть уникальным ( {0} )", PN1);
                       UniqueValueValidator.IsValid = false;
                       return;
                   }
                   else if (listPn1.Count > 0 && listPn1.Where(l => l.ID == this.RequestDictionaryEntityID).Count() == 0)
                   {
                       UniqueValueValidator.Text = string.Format("! Значение поля [Обозначение] должно быть уникальным ( {0} )", PN1);
                       UniqueValueValidator.IsValid = false;
                       return;
                   }

                   #endregion
               }
            }

            Guid oldDictionaryEntityID = this.RequestDictionaryEntityID;
            if (this.IsNew && !this.IsNewAdded)
            {
                using (DictionaryProvider provider = new DictionaryProvider())
                {
                    Guid newID = provider.AddNewDictionaryEntity(this.DictionaryTreeID, this.RequestDictionaryEntityID);
                    this.RequestDictionaryEntityID = newID;
                    IsNewAdded = true;
                    //newDictionaryEntityID = newID;
                    Aspect.Utility.TraceHelper.Log(User.ID, "Справочник treeID: {0}. Новая запись: {1}", this.DictionaryTreeID, newID);
                }
            }
            using (DictionaryProvider provider = new DictionaryProvider())
            {
                //update properties
                foreach (RepeaterItem item in GeneralPropertyRepeater.Items)
                {
                    string col_name = (item.FindControl("HiddenID") as HiddenField).Value;
                    //string value = (item.FindControl("PropertyValue") as TextBox).Text.Trim();
                    EditControl editControl = item.FindControl("PropertyValueAdv") as EditControl;
                    if (!editControl.Validate())
                    {
                        continue;
                    }
                    string value = editControl.Value.ToString().Trim();
                    /*if (col_name == "superpole" && this.DictionaryTreeID == new Guid("316C6BC7-D883-44C8-AAE0-602F49C73595"))
                    {
                    }*/
                    try
                    {
                        if (item.ItemType == ListItemType.Item || item.ItemType == ListItemType.AlternatingItem)
                        {
                            object obj = provider.GetDictionaryItemValue(this.DictionaryTreeID, this.RequestDictionaryEntityID, col_name);
                            if (obj == null || obj == DBNull.Value || !value.Equals(obj.ToString().Trim()))
                            {
                                Aspect.Utility.TraceHelper.Log(User.ID, "Справочник treeID: {0}.  Запись: {4}. Свойство изменино: {1}. Старое значение {2}. Новое значение {3}", this.DictionaryTreeID, col_name, ((obj == null || obj == DBNull.Value) ? "NULL" : obj.ToString()), value, RequestDictionaryEntityID);
                                if (editControl.ControlType == TypeEnum.Datetime)
                                {
                                    DateTime dt = DateTime.ParseExact(value, "dd.MM.yyyy", System.Globalization.CultureInfo.InvariantCulture);
                                    if (dt == DateTime.MinValue) provider.DeleteDictionaryItemValue(this.DictionaryTreeID, this.RequestDictionaryEntityID, col_name);
                                    else provider.SetDictionaryItemValue(this.DictionaryTreeID, this.RequestDictionaryEntityID, col_name, dt.ToString("MM/dd/yyyy"), User.ID);
                                }
                                else
                                {
                                    if (IsNew && col_name == "raznes") value = "0";
                                    /*
                                     * Переносим вес в первую версию продукта основную версию при условии
                                     */
                                    #region moving_weight
                                    if (IsNew && col_name == "pw")
                                    {
                                        using (ProductProvider productProvider = new ProductProvider())
                                        {
                                            try
                                            {
                                                productProvider.SetProductWeight(this.RequestDictionaryEntityID, Convert.ToDecimal(value.Replace(",", "."), CultureInfo.InvariantCulture));
                                            }
                                            catch { }
                                        }
                                    }
                                    #endregion
                                    provider.SetDictionaryItemValue(this.DictionaryTreeID, this.RequestDictionaryEntityID, col_name, value, User.ID);
                                }
                            }
                        }
                    }
                    catch (Exception)
                    {
                        this.NotSavedProperties.Add(new Pair<string, string>(col_name, value));
                        //(item.FindControl("PropertyValidator") as CustomValidator).IsValid = false;
                    }
                }

                foreach (RepeaterItem item in DictionaryPropertyRepeater.Items)
                {
                    if (item.ItemType == ListItemType.Item || item.ItemType == ListItemType.AlternatingItem)
                    {
                        Guid dictId = new Guid((item.FindControl("HiddenTreeID") as HiddenField).Value);
                        string valueString = (item.FindControl("HiddenID") as HiddenField).Value;
                        DictionaryTree dict = provider.DictionaryTrees.Single(d => d.ID == dictId);

                        object obj = provider.GetDictionaryItemValue(this.DictionaryTreeID, this.RequestDictionaryEntityID, dict.FK);

                        if (!string.IsNullOrEmpty(valueString) && !(new Guid(valueString).Equals(Guid.Empty)))
                        {
                            if (obj == null || obj == DBNull.Value || obj.ToString() != valueString)
                            {
                                Aspect.Utility.TraceHelper.Log(User.ID, "Справочник treeID: {0}. Запись: {4}. Свойство изменино: {1}. Старое значение {2}. Новое значение {3}", this.DictionaryTreeID, dict.FK, ((obj == null || obj == DBNull.Value) ? "NULL" : obj.ToString()), valueString, this.RequestDictionaryEntityID);
                                provider.SetDictionaryItemValue(this.DictionaryTreeID, this.RequestDictionaryEntityID, dict.FK, valueString.Trim(), User.ID);
                            }
                        }
                        else
                        {
                            if (obj != null && obj != DBNull.Value)
                            {
                                Aspect.Utility.TraceHelper.Log(User.ID, "Справочник treeID: {0}. Запись: {3}. Свойство удалено: {1}. Старое значение {2}. Новое значение NULL", this.DictionaryTreeID, dict.FK, obj.ToString(), this.RequestDictionaryEntityID);
                                provider.DeleteDictionaryItemValue(this.DictionaryTreeID, this.RequestDictionaryEntityID, dict.FK);
                            }
                        }
                    }
                }
                //provider.SubmitChanges();
            }
            //this.BindDictionaryList();
            /*if (this.IsNew && this.IsValid)
            {
                Response.Redirect(string.Format("~/Editarea/EditDict.aspx?ID={0}&new=false&DictID={1}", this.RequestDictionaryEntityID, Request["DictID"]));
            }*/

            // для "Номенклатура" и "Номен. материала"
            if (this.IsNew && DictionaryTreeID == new Guid("316c6bc7-d883-44c8-aae0-602f49c73595"))
            {
                // если "Копировать состав из основной версии"
                if (this.CopyMainVersion.Checked)
                {
                    using (ProductProvider provider = new ProductProvider())
                    {
                        Guid newMainProductID = (from prod in provider.Products
                                                 where prod._dictNomenID == this.RequestDictionaryEntityID
                                                 select prod.ID).FirstOrDefault();
                        Guid oldMainProductID = (from prod in provider.Products
                                              join vers in provider.ProductProperties
                                                on prod.ID equals vers.ProductID
                                              where vers.Value == "1" && vers.PropertyID == new Guid("BBE170B0-28E4-4738-B365-1038B03F4552") // основная версия
                                              && prod._dictNomenID == oldDictionaryEntityID
                                              select prod.ID).FirstOrDefault();

                        if (!Guid.Empty.Equals(oldMainProductID))
                        {
                            //newMainProductID = provider.CopyProduct(oldMainProductID, 2, RequestDictionaryEntityID);
                            provider.CopyConfiguration(oldMainProductID, newMainProductID, User.ID);
                        }
                    }
                }
                // если класс не "МатРесурсы"
                if (new Guid(userCID.Value) != new Guid("55c7b455-0638-4acb-ac2e-5b4992e48462"))
                {
                    using (ProductProvider provider = new ProductProvider())
                    {
                        provider.ChangeProductClassification(this.RequestDictionaryEntityID, new Guid(userCID.Value));
                    }
                }
            }
            if (IsNew) Response.Redirect(string.Format("/Editarea/EditDict.aspx?ID={0}&new=false&DictID={1}", RequestDictionaryEntityID, DictionaryTreeID));
            else if(Page.IsValid) this.DataLoad();
        }