Exemplo n.º 1
0
 public Marketer(Guid barcodeId, string firstName, string lastName, string nationalCode,
                 string idNumber, Gender gender, string fatherName, DateTime birthDate,
                 string description, int maxMarketerAllowed, IList <string> documents, string image,
                 MarketerAddress marketerAddress, MarketerSalary marketerSalary, MarketerReagent marketerReagent,
                 Guid userId)
 {
     BarcodeId          = barcodeId;
     FirstName          = firstName;
     LastName           = lastName;
     NationalCode       = nationalCode;
     IdNumber           = idNumber;
     Gender             = gender;
     FatherName         = fatherName;
     BirthDate          = birthDate;
     Description        = description;
     MaxMarketerAllowed = maxMarketerAllowed;
     Image           = image;
     Documents       = string.Join(",", documents);
     MarketerAddress = marketerAddress;
     MarketerSalary  = marketerSalary;
     MarketerReagent = marketerReagent;
     UserId          = userId;
     CreationTime    = DateTime.Now;
     IsActive        = true;
 }
        public Task <MarketerCommandResponse> Handle(CreateMarketerCommand command)
        {
            var marketerAddress = new MarketerAddress(command.MarketerAddress.AddressText,
                                                      command.MarketerAddress.PhoneNumber, command.MarketerAddress.MobileNumber,
                                                      command.MarketerAddress.RequiredPhoneNumber, command.MarketerAddress.CityId,
                                                      command.MarketerAddress.CityName);
            var marketerSalary  = new MarketerSalary(command.MarketerSalary.FixedSalary, command.MarketerSalary.InterestRates);
            var marketerReagent = new MarketerReagent(command.MarketerReagent.ReagentName,
                                                      command.MarketerReagent.ReagentMobileNumber);
            var marketer = new Marketer(command.BarcodeId, command.FirstName, command.LastName, command.NationalCode,
                                        command.IdNumber, command.Gender, command.FatherName, command.BirthDate, command.Description,
                                        command.MaxMarketerAllowed, command.Documents, command.Image, marketerAddress, marketerSalary,
                                        marketerReagent, command.UserId)
            {
                Comments = new List <MarketerComment>()
            };

            _repository.Add(marketer);
            return(Task.FromResult(new MarketerCommandResponse()));
        }
        public Task <UpdateMarketerCommandResponse> Handle(UpdateMarketerCommand command)
        {
            var marketer = _repository.AsQuery().SingleOrDefault(p => p.Id == command.Id);

            if (marketer == null)
            {
                throw new DomainException("بازاریاب یافت نشد");
            }
            var countShopMarketer = _shopRepository.AsQuery().Count(p => p.MarketerId == command.Id);

            if (countShopMarketer > command.MaxMarketerAllowed)
            {
                throw new DomainException("تعداد فروشگاه این یازاریاب بیش از تعداد مجاز وارد شده می باشد");
            }
            var marketerAddress = new MarketerAddress(command.MarketerAddress.AddressText,
                                                      command.MarketerAddress.PhoneNumber, command.MarketerAddress.MobileNumber,
                                                      command.MarketerAddress.RequiredPhoneNumber, command.MarketerAddress.CityId,
                                                      command.MarketerAddress.CityName);
            var marketerSalary  = new MarketerSalary(command.MarketerSalary.FixedSalary, command.MarketerSalary.InterestRates);
            var marketerReagent = new MarketerReagent(command.MarketerReagent.ReagentName,
                                                      command.MarketerReagent.ReagentMobileNumber);

            marketer.MarketerAddress    = marketerAddress;
            marketer.MarketerSalary     = marketerSalary;
            marketer.MarketerReagent    = marketerReagent;
            marketer.BarcodeId          = command.BarcodeId;
            marketer.FatherName         = command.FatherName;
            marketer.LastName           = command.LastName;
            marketer.FirstName          = command.FirstName;
            marketer.NationalCode       = command.NationalCode;
            marketer.IdNumber           = command.IdNumber;
            marketer.Gender             = command.Gender;
            marketer.BirthDate          = command.BirthDate;
            marketer.MaxMarketerAllowed = command.MaxMarketerAllowed;
            marketer.Documents          = "";
            marketer.Documents          = string.Join(",", command.Documents);
            marketer.Image = command.Image;

            return(Task.FromResult(new UpdateMarketerCommandResponse()));
        }