Explorar o código

Standard-Sortierung aller Listen überarbeitet und Fehler bei Nachtragsbearbeitung behoben!

Arne Diekmann %!s(int64=8) %!d(string=hai) anos
pai
achega
2a404951fa

+ 5 - 0
GreenTree.Nachtragsmanagement.Core/Domain/Appendix/State.cs

@@ -18,6 +18,11 @@ namespace GreenTree.Nachtragsmanagement.Core.Domain.Appendix
         /// </summary>
         public string HexColor { get; set; }
 
+        /// <summary>
+        /// Determines if this state sets the value of the appendix to zero
+        /// </summary>
+        public bool IsZeroValue { get; set; }
+
         /// <summary>
         /// Determines if this state is defaultly selected
         /// </summary>

+ 1 - 0
GreenTree.Nachtragsmanagement.Data/Mapping/Appendix/StateMap.cs

@@ -17,6 +17,7 @@ namespace GreenTree.Nachtragsmanagement.Data.Mapping.Deviation
 
             Property(f => f.Description);
             Property(f => f.HexColor);
+            Property(f => f.IsZeroValue);
             Property(f => f.IsDefault);
             Property(f => f.IsFinish);
         }

+ 3 - 0
GreenTree.Nachtragsmanagement.Web/Controllers/AppendixController.cs

@@ -105,6 +105,7 @@ namespace GreenTree.Nachtragsmanagement.Web.Controllers
             var appendices = _appendixService.GetAllUserAssignedAppendices(currentUser);
             var appendixModels = appendices
                 .Select(u => AppendixDataModel.FromAppendix(u, false))
+                .OrderBy(u => u.CustomNumber)
                 .ToList();
 
             ViewData["ScrollHeight"] = scrollHeight;
@@ -446,6 +447,7 @@ namespace GreenTree.Nachtragsmanagement.Web.Controllers
                     appendix.CustomNumber = appendixModel.CustomNumber;
                     appendix.Description = appendixModel.Description;
                     appendix.Percentage = appendixModel.Percentage;
+                    appendix.Value = appendixModel.OfferingValue;
                     appendix.OfferingNumber = appendixModel.OfferingNumber;
                     appendix.OfferingDate = appendixModel.OfferingDate;
                     appendix.NegotiationDate = appendixModel.NegotiationDate;
@@ -779,6 +781,7 @@ namespace GreenTree.Nachtragsmanagement.Web.Controllers
 
                     state.Description = stateModel.Description;
                     state.HexColor = stateModel.HexColor;
+                    state.IsZeroValue = stateModel.IsZeroValue;
                     state.IsDefault = stateModel.IsDefault;
                     state.IsFinish = stateModel.IsFinish;
 

+ 1 - 1
GreenTree.Nachtragsmanagement.Web/Controllers/MiscController.cs

@@ -660,7 +660,7 @@ namespace GreenTree.Nachtragsmanagement.Web.Controllers
                 if (fileSaveSettings == null)
                 {
                     fileSaveSettings = new HtmlEditorFileSaveSettings();
-                    fileSaveSettings.FileSystemSettings.UploadFolder = "~/Content/Images/HelpPages/";
+                    fileSaveSettings.FileSystemSettings.UploadFolder = "../Content/Images/HelpPages/";
                 }
                 return fileSaveSettings;
             }

+ 20 - 1
GreenTree.Nachtragsmanagement.Web/Extensions/GridViewSettingsHelper.cs

@@ -129,6 +129,9 @@ namespace GreenTree.Nachtragsmanagement.Web.Extensions
                 column.SettingsHeaderFilter.Mode = GridHeaderFilterMode.CheckedList;
                 column.MinWidth = 100;
                 column.Width = new Unit(8, UnitType.Percentage);
+                column.SortIndex = 0;
+                column.SortOrder = ColumnSortOrder.Ascending;
+                column.Settings.SortMode = DevExpress.XtraGrid.ColumnSortMode.Custom;
             });
             s.Columns.Add(column =>
             {
@@ -301,6 +304,18 @@ namespace GreenTree.Nachtragsmanagement.Web.Extensions
                 System.Web.HttpContext.Current.Session["SiteGridViewState"] = new MVCxGridViewState(gridView);
             };
 
+            s.CustomColumnSort = (sender, e) =>
+            {
+                if (e.Column.FieldName != "CustomNumber") return;
+
+                int.TryParse(e.GetRow1Value("CustomNumber").ToString(), out int rowVal1);
+                int.TryParse(e.GetRow2Value("CustomNumber").ToString(), out int rowVal2);
+
+                e.Result = (rowVal1).CompareTo(rowVal2);
+
+                e.Handled = true;
+            };
+
             s.ClientSideEvents.BeginCallback = "function (s, e) { e.customArgs['scrollHeight'] = [ gridScrollHeight ]; }";
             s.ClientSideEvents.ToolbarItemClick = "function (s, e) { onToolbarItemClick(s, e); }";
 
@@ -394,6 +409,8 @@ namespace GreenTree.Nachtragsmanagement.Web.Extensions
                 column.Settings.AutoFilterCondition = AutoFilterCondition.Equals;
                 column.Settings.ShowFilterRowMenu = DefaultBoolean.False;
                 column.SettingsHeaderFilter.Mode = GridHeaderFilterMode.CheckedList;
+                column.SortIndex = 0;
+                column.SortOrder = ColumnSortOrder.Ascending;
                 column.Settings.SortMode = DevExpress.XtraGrid.ColumnSortMode.Custom;
             });
             s.Columns.Add(column =>
@@ -864,8 +881,10 @@ namespace GreenTree.Nachtragsmanagement.Web.Extensions
                 column.Width = new Unit(80, UnitType.Pixel);
                 column.Settings.AutoFilterCondition = AutoFilterCondition.Equals;
                 column.Settings.ShowFilterRowMenu = DefaultBoolean.False;
-                column.Settings.SortMode = DevExpress.XtraGrid.ColumnSortMode.Custom;
                 column.SettingsHeaderFilter.Mode = GridHeaderFilterMode.CheckedList;
+                column.Settings.SortMode = DevExpress.XtraGrid.ColumnSortMode.Custom;
+                column.SortIndex = 0;
+                column.SortOrder = ColumnSortOrder.Ascending;
             });
             s.Columns.Add(column =>
             {

+ 3 - 0
GreenTree.Nachtragsmanagement.Web/Models/Appendix/StateDataModel.cs

@@ -10,6 +10,7 @@ namespace GreenTree.Nachtragsmanagement.Web.Models.Appendix
         public int Id { get; set; }
         public string Description { get; set; }
         public string HexColor { get; set; }
+        public bool IsZeroValue { get; set; }
         public bool IsDefault { get; set; }
         public bool IsFinish { get; set; }
 
@@ -29,6 +30,7 @@ namespace GreenTree.Nachtragsmanagement.Web.Models.Appendix
                 Id = stateEntity.Id,
                 Description = stateEntity.Description,
                 HexColor = stateEntity.HexColor,
+                IsZeroValue = stateEntity.IsZeroValue,
                 IsDefault = stateEntity.IsDefault,
                 IsFinish = stateEntity.IsFinish
             };
@@ -41,6 +43,7 @@ namespace GreenTree.Nachtragsmanagement.Web.Models.Appendix
                 Id = this.Id,
                 Description = this.Description,
                 HexColor = this.HexColor,
+                IsZeroValue = this.IsZeroValue,
                 IsDefault = this.IsDefault,
                 IsFinish = this.IsFinish
             };

+ 0 - 4
GreenTree.Nachtragsmanagement.Web/Validation/Appendix/AppendixDataModelValidator.cs

@@ -33,10 +33,6 @@ namespace GreenTree.Nachtragsmanagement.Web.Validation.Appendix
             RuleFor(m => m.OfferingDate)
                 .NotEmpty()
                     .WithMessage("Einreichdatum wird benötigt");
-
-            RuleFor(m => m.OfferingValue)
-                .NotEmpty()
-                    .WithMessage("Eine Angebotssumme wird benötigt");
         }
 
         private bool CustomNumberDoesNotExistInSite(AppendixDataModel model)

+ 29 - 0
GreenTree.Nachtragsmanagement.Web/Views/Appendices/_AppendixEditPartial.cshtml

@@ -12,6 +12,16 @@
 
 	<script>
 		var textSeparator = ", ";
+		var zeroValueStates =
+		[
+			@foreach (var state in (IEnumerable<GreenTree.Nachtragsmanagement.Core.Domain.Appendix.State>)ViewData["AllStates"])
+			{
+				if (state.IsZeroValue)
+				{ 
+					ViewContext.Writer.Write(state.Id);
+				}
+			}
+		];
 
 		function saveAppendix() {
 			CategoryEntities.SelectAll();
@@ -113,6 +123,23 @@
 			});
 		}
 
+		function isZeroValueState() {
+			var selectedValue = StateId.GetSelectedItem().value;
+			if (!selectedValue) return;
+			for (var i = 0; i < zeroValueStates.length; i++) {
+				if (zeroValueStates == selectedValue) {
+					var controls = ASPxClientControl.GetControlCollection();
+					var offeringValue = controls.GetByName("OfferingValue");
+					var percentage = controls.GetByName("Percentage");
+					var percentageValue = controls.GetByName("PercentageValue");
+					offeringValue.SetValue(0.00);
+					percentage.SetValue(0.00);
+					percentageValue.SetValue(0.00);
+					break;
+				}
+			}
+		}
+
 		function setInvoiceDropDownTest() {
 			var textArray = $(".invoiceText").map(function () {
 				return $(this).text();
@@ -433,6 +460,8 @@
 							Model = serializedModel,
 							Type = Model.GetType().FullName
 						};
+
+						t.Properties.ClientSideEvents.SelectedIndexChanged = "function (s, e) { isZeroValueState(); }";
 					}));
 					ViewData.Add("StatesComboBoxSettings", "AppendixStatesComboBoxSettings");
 					Html.RenderPartial("~/Views/Shared/DataEditorTemplates/_StatesComboBox.cshtml", Model, ViewData);

+ 35 - 0
GreenTree.Nachtragsmanagement.Web/Views/Appendices/_StateEditPartial.cshtml

@@ -139,6 +139,41 @@
 			}
 			ViewContext.Writer.Write("</div>");
 
+			ViewContext.Writer.Write("<div class='inlineModelPropertyContainer'>");
+			{
+				ViewContext.Writer.Write("<div class='inlineModelProperty' style='width: 100%'>");
+				{
+					ViewContext.Writer.Write(Html.CustomLabelFor(m => m.IsZeroValue, "Ist ein \"0 Wert\"-Status:"));
+					ViewContext.Writer.Write("<div style=\"overflow: hidden\">");
+					{
+						ViewContext.Writer.Write("<div style=\"float: left\">");
+						{
+							Html.DevExpress().RadioButtonFor(m => m.IsZeroValue, t =>
+							{
+								t.Text = "Ja";
+								t.GroupName = "isZeroValue";
+							}).Render();
+						}
+						ViewContext.Writer.Write("</div>");
+
+						ViewContext.Writer.Write("<div style=\"float: left; margin-left: 8px\">");
+						{
+							Html.DevExpress().RadioButton(t =>
+							{
+								t.Name = "IsZeroValueFalse";
+								t.Text = "Nein";
+								t.GroupName = "isZeroValue";
+								t.Checked = !Model.IsZeroValue;
+							}).Render();
+						}
+						ViewContext.Writer.Write("</div>");
+					}
+					ViewContext.Writer.Write("</div>");
+				}
+				ViewContext.Writer.Write("</div>");
+			}
+			ViewContext.Writer.Write("</div>");
+
 			ViewContext.Writer.Write("</div>");
 
 			Html.RenderPartial(