85 lines
3.8 KiB
C#
85 lines
3.8 KiB
C#
using Back.Common;
|
|
using Back.Data.Contracts;
|
|
using Back.Data.Models;
|
|
using Back.Services;
|
|
using FluentValidation;
|
|
using Microsoft.EntityFrameworkCore;
|
|
using Shared.DTOs;
|
|
|
|
namespace Back.Validations
|
|
{
|
|
public class AddOrUpdateInvoiceValidation : AbstractValidator<Tuple<int, NUInvoiceDTO, eActionValidation>>
|
|
{
|
|
public AddOrUpdateInvoiceValidation(IAsyncRepository<Pattern> patternRepo, servCustomer servCustomer
|
|
, servInvoice servInvoice, CheckPermission checkPermission)
|
|
{
|
|
When(m => m.Item3 == eActionValidation.update, () =>
|
|
{
|
|
RuleFor(r => r)
|
|
.Custom((model, context) =>
|
|
{
|
|
if (model.Item2.ID == null || model.Item2.ID <= 0)
|
|
context.AddFailure("شناسه صورتحساب در حالت ویرایش نمی تواند خالی باشد");
|
|
|
|
else if (!servInvoice.ExistInvoiceByInvoiceID(model.Item1,model.Item2.ID.Value ).Result)
|
|
context.AddFailure("ضورتحساب یافت نشد");
|
|
});
|
|
|
|
});
|
|
When(m => m.Item3 == eActionValidation.add, () =>
|
|
{
|
|
RuleFor(r => r.Item1)
|
|
.Custom((CompanyID, context) =>
|
|
{
|
|
if (!checkPermission.AllowAddInvoiceInCompany(CompanyID).Result)
|
|
context.AddFailure("اضافه کردن صورتحساب محدود شده است");
|
|
|
|
});
|
|
|
|
});
|
|
|
|
RuleFor(r => r.Item2.Title)
|
|
.NotNull().WithMessage("عنوان نمی تواند خالی باشد")
|
|
.NotEmpty().WithMessage("عنوان نمی تواند خالی باشد")
|
|
.MinimumLength(3).WithMessage("عنوان حداقل باید 3 کاراکتر باشد");
|
|
|
|
RuleFor(r => r.Item2.PatternID)
|
|
.Custom((PatternID, context) =>
|
|
{
|
|
if (PatternID!=null && PatternID > 0 && !patternRepo.Get(w => w.Status && w.ID == PatternID).AnyAsync().Result)
|
|
context.AddFailure("الگوی صورتحساب معتبر نیست");
|
|
});
|
|
|
|
RuleFor(r => r)
|
|
.Custom((model, context) =>
|
|
{
|
|
if (model.Item2.CustomerID == null || model.Item2.CustomerID <=0)
|
|
context.AddFailure("برای صدور صورتحساب باید مشتری تعریف شود");
|
|
|
|
else if (!servCustomer.ExistCustomerByCustomerID(model.Item2.CustomerID, model.Item1).Result)
|
|
context.AddFailure("مشتری یافت نشد");
|
|
});
|
|
|
|
RuleFor(r => r.Item2.InvoiceDate)
|
|
.Custom((InvoiceDate, context) =>
|
|
{
|
|
if (string.IsNullOrEmpty(InvoiceDate))
|
|
context.AddFailure("تاریخ ایجاد صورتحساب نمی تواند خالی باشد");
|
|
|
|
else if (InvoiceDate.Trim().ToMiladi() > DateTime.Now)
|
|
context.AddFailure("تاریخ ایجاد صورتحساب نمی تواند از امروز جلوتر باشد");
|
|
});
|
|
|
|
RuleFor(r => r.Item2.InvoicIssueDate)
|
|
.Custom((InvoicIssueDate, context) =>
|
|
{
|
|
if (string.IsNullOrEmpty(InvoicIssueDate))
|
|
context.AddFailure("تاریخ صدور صورتحساب نمی تواند خالی باشد");
|
|
|
|
else if (InvoicIssueDate.Trim().ToMiladi() > DateTime.Now)
|
|
context.AddFailure("تاریخ صدور صورتحساب نمی تواند از امروز جلوتر باشد");
|
|
});
|
|
}
|
|
}
|
|
}
|