using DevExpress.Blazor; using FruitBank.Common.Dtos; using FruitBank.Common.Entities; using FruitBank.Common.Interfaces; using FruitBankHybrid.Shared.Models; using Mango.Nop.Core.Dtos; namespace FruitBankHybrid.Shared.Services; public class MeasuringService { public MeasuringService() { } public static bool DaysEqual(DateTime date1, DateTime date2) => (date1.Year == date2.Year && date1.DayOfYear == date2.DayOfYear); public static void OnCustomDisabledDate(CalendarCustomDisabledDateEventArgs args, List? measuringDates) => args.IsDisabled = measuringDates == null || !measuringDates.Exists(shippingDateModel => DaysEqual(shippingDateModel.DateTime, args.Date)); public static string GetShippingDateCssClassNames(DateTime date, List? measuringDates) { if (measuringDates == null) return string.Empty; if (measuringDates.Exists(shipping => !shipping.IsMeasured && shipping.DateTime.Date <= DateTime.Now.Date && DaysEqual(shipping.DateTime, date))) return "fw-bold text-danger"; if (measuringDates.Exists(shipping => shipping.IsMeasured && DaysEqual(shipping.DateTime, date))) return "fw-bold text-success"; if (measuringDates.Exists(shipping => !shipping.IsMeasured && DaysEqual(shipping.DateTime, date))) return "fw-bold"; return string.Empty; } public static string GetCustomItemPalletsCssClassNames(string fieldName, IMeasuringItemPalletBase shippingItemPallet, bool isMeasurable, int? maxTrayQuantity = null) { //if (shippingItemPallet.NetWeight < 0) return "text-danger"; switch (fieldName) { case nameof(ShippingItemPallet.TareWeight): return IsCustomItemPalletMeasuredAndValid(shippingItemPallet, isMeasurable) ? "text-success" : (shippingItemPallet.TareWeight < 0 || shippingItemPallet.NetWeight < 0 ? "text-danger" : ""); break; case nameof(ShippingItemPallet.PalletWeight): return IsCustomItemPalletMeasuredAndValid(shippingItemPallet, isMeasurable) ? "text-success" : (shippingItemPallet.PalletWeight < 0 || shippingItemPallet.NetWeight < 0 ? "text-danger" : ""); break; case nameof(ShippingItemPallet.TrayQuantity): //return IsCustomItemPalletMeasuredAndValid(shippingItemPallet, isMeasurable) ? "text-success" : (shippingItemPallet.TrayQuantity < 0 || (maxTrayQuantity.HasValue && shippingItemPallet.TrayQuantity > maxTrayQuantity.Value) ? "text-danger" : ""); return shippingItemPallet.TrayQuantity < 0 || (maxTrayQuantity.HasValue && shippingItemPallet.TrayQuantity > maxTrayQuantity.Value) ? "text-danger" : (IsCustomItemPalletMeasuredAndValid(shippingItemPallet, isMeasurable) ? "text-success" : ""); break; case nameof(ShippingItemPallet.GrossWeight): return IsCustomItemPalletMeasuredAndValid(shippingItemPallet, isMeasurable) ? "text-success" : (shippingItemPallet.GrossWeight < 0 || shippingItemPallet.NetWeight < 0 ? "text-danger" : ""); break; case nameof(ShippingItemPallet.NetWeight): return IsCustomItemPalletMeasuredAndValid(shippingItemPallet, isMeasurable) ? "text-success" : (shippingItemPallet.NetWeight < 0 ? "text-danger" : ""); break; } return string.Empty; } public static OrderItemPallet CreateNewOrderItemPallet(OrderItemDto orderItemDto, CustomerDto? customerDto) { var orderItemPallet = new OrderItemPallet { OrderItemId = orderItemDto.Id, OrderItemDto = orderItemDto, TareWeight = orderItemDto.ProductDto?.Tare ?? 0, CreatorId = customerDto?.Id, ModifierId = customerDto?.Id }; return orderItemPallet; } public static bool IsCustomItemPalletMeasuredAndValid(IMeasuringItemPalletBase customItemPallet, bool isMeasurable) => customItemPallet.IsMeasuredAndValid(isMeasurable); }