using Back.Data.Contracts; using Back.Services.Warehouse; using Back.Services; using FluentValidation; using Shared.DTOs.Warehouse; using Microsoft.EntityFrameworkCore; namespace Back.Validations.Warehouse.Remittance { public class UpdateValidation : AbstractValidator> { public UpdateValidation(IAsyncRepository _Repo, ServCOD servCOD, WarehouseService warehouseService) { CascadeMode = CascadeMode.Stop; RuleFor(model => model) .Custom((model, context) => { var ORGitem = _Repo.Get(w => w.ID == model.Item1.ID && !w.Deleted).Include(i => i.cODItem).FirstOrDefault(); if (ORGitem.InvoiceID.HasValue) { context.AddFailure("حواله فاکتور قایل ویرایش نیست"); return; } if (ORGitem == null) context.AddFailure("حواله یافت نشد"); else { if (ORGitem.CODID != model.Item1.CODID) { context.AddFailure("در حئاله امکان ویرایش کالا انکان پذیر نیست"); } else { if ( (ORGitem.Count < model.Item1.Count)) { var Inventory = warehouseService.Inventory(model.Item2, model.Item1.CODID).Result; if (Inventory - (model.Item1.Count - ORGitem.Count) < 0) { context.AddFailure($"این تغییرات روی موجودی کالا تاثیر میگذارد و آن را منفی میکند"); } } else { if (string.IsNullOrEmpty(model.Item1.info)) { context.AddFailure("توضیحی برای حواله در نظر بگیرید"); } } } } }); } } }