using Back.Data.Contracts; using FluentValidation; using Shared.DTOs.Warehouse; using Back.Services; using Back.Data.Models; using Back.Common; namespace Back.Validations.Warehouse.Receipt { public class ADDValidation : AbstractValidator> { public ADDValidation(ServCOD servCOD, CheckPermission checkPermission) { // کالا مدنظر برای شرکت است CascadeMode = CascadeMode.Stop; RuleFor(model => model) .Custom((model, context) => { if (!servCOD.ExistCodByCompanyID(model.Item1.CODID, model.Item2).Result) context.AddFailure("کد کالا یافت نشد"); }); RuleFor(model => model.Item1.Count) .Custom((model, context) => { if (model <= 0) context.AddFailure("تعداد نمیتواند صفر یا کمتر از صفر باشد"); }); RuleFor(model => model.Item1.info) .Custom((model, context) => { if (string.IsNullOrEmpty(model)) context.AddFailure("توضیحی برای رسید در نظر بگیرید"); }); RuleFor(r => r.Item1.Date) .Custom((InvoiceDate, context) => { if (string.IsNullOrEmpty(InvoiceDate)) context.AddFailure("تاریخ نمی تواند خالی باشد"); else if (InvoiceDate.Length != 8) context.AddFailure("تاریخ صحیح نمی باشد"); else if (InvoiceDate.Trim().ToMiladi() > DateTime.Now) context.AddFailure("تاریخ از امروز جلوتر باشد"); }); RuleFor(r => r.Item2) .Custom((CompanyID, context) => { if (!checkPermission.AllowAddReceiptInCompany(CompanyID).Result) context.AddFailure("اضافه کردن رسید محدود شده است"); }); } } }