예제 #1
0
 private static void Validate(
     ClientData clientData, ApplicationAdminModel model, TransitEditModel transitModel,
     ApplicationData data)
 {
     data.ShouldBeEquivalentTo(model,
                               options => options.ExcludingMissingProperties()
                               .Excluding(x => x.PickupCost)
                               .Excluding(x => x.CarrierId)
                               .Excluding(x => x.CarrierName)
                               .Excluding(x => x.InsuranceRate));
     data.InsuranceRate.ShouldBeEquivalentTo(model.InsuranceRate / 100);
     data.GetAdjustedFactureCost().ShouldBeEquivalentTo(model.FactureCostEdited);
     data.GetAdjustedFactureCostEx().ShouldBeEquivalentTo(model.FactureCostExEdited);
     data.GetAdjustedTransitCost().ShouldBeEquivalentTo(model.TransitCostEdited);
     data.GetAdjustedPickupCost().ShouldBeEquivalentTo(model.PickupCostEdited);
     data.GetAdjustedScotchCost().ShouldBeEquivalentTo(model.ScotchCostEdited);
     data.CurrencyId.ShouldBeEquivalentTo(model.Currency.CurrencyId);
     data.ClientLegalEntity.ShouldBeEquivalentTo(clientData.LegalEntity);
     data.ClientNic.ShouldBeEquivalentTo(clientData.Nic);
     data.TransitAddress.ShouldBeEquivalentTo(transitModel.Address);
     data.TransitCityId.ShouldBeEquivalentTo(TestConstants.TestCityId1);
     data.CarrierId.ShouldBeEquivalentTo(TestConstants.TestCarrierId1);
     data.TransitDeliveryType.ShouldBeEquivalentTo(transitModel.DeliveryType);
     data.TransitMethodOfTransit.ShouldBeEquivalentTo(transitModel.MethodOfTransit);
     data.TransitPhone.ShouldBeEquivalentTo(transitModel.Phone);
     data.TransitRecipientName.ShouldBeEquivalentTo(transitModel.RecipientName);
     data.TransitWarehouseWorkingTime.ShouldBeEquivalentTo(transitModel.WarehouseWorkingTime);
 }
예제 #2
0
        public virtual ActionResult Create(
            long clientId,
            ApplicationAdminModel model,
            [Bind(Prefix = "Transit")] TransitEditModel transitModel)
        {
            var client = _clients.Get(clientId);

            if (!ModelState.IsValid)
            {
                BindBag(null, client);

                return(View(model));
            }

            try
            {
                _manager.Add(model, transitModel, clientId);
            }
            catch (DublicateException ex)
            {
                ModelState.AddModelError("DublicateException", ex.ToString());

                BindBag(null, client);

                return(View(model));
            }

            return(RedirectToAction(MVC.ApplicationList.Index()));
        }
예제 #3
0
        public long Add(ClientModel client, TransitEditModel transit)
        {
            var id = _manager.Add(client, transit);

            _events.Add(id, EventType.ClientAdded, EventState.Emailing, client.Authentication.NewPassword);

            return(id);
        }
예제 #4
0
        public long Add(TransitEditModel transit, long?forsedCarrierId)
        {
            var data = new TransitData();

            TransitMapper.Map(transit, data, GetCarrier(forsedCarrierId, transit.CityId, null));

            var transitId = _transits.Add(data);

            return(transitId);
        }
예제 #5
0
        public long Add(ApplicationAdminModel model, TransitEditModel transit,
                        long clientId)
        {
            var transitId = _transitService.Add(transit, model.CarrierId);

            var data = new ApplicationEditData
            {
                Class                = null,
                TransitId            = transitId,
                Invoice              = model.Invoice,
                Characteristic       = model.Characteristic,
                AddressLoad          = model.AddressLoad,
                WarehouseWorkingTime = model.WarehouseWorkingTime,
                Weight               = model.Weight,
                Count                = model.Count,
                Volume               = model.Volume,
                TermsOfDelivery      = model.TermsOfDelivery,
                Value                = model.Currency.Value,
                CurrencyId           = model.Currency.CurrencyId,
                CountryId            = model.CountryId,
                FactoryName          = model.FactoryName,
                FactoryPhone         = model.FactoryPhone,
                FactoryEmail         = model.FactoryEmail,
                FactoryContact       = model.FactoryContact,
                MarkName             = model.MarkName,
                MethodOfDelivery     = model.MethodOfDelivery,
                IsPickup             = model.IsPickup,
                AirWaybillId         = null,
                DateInStock          = null,
                DateOfCargoReceipt   = null,
                TransitReference     = null,
                ClientId             = clientId,
                PickupCost           = model.PickupCost,
                TransitCost          = model.TransitCost,
                FactureCost          = model.FactureCost,
                FactureCostEx        = model.FactureCostEx,
                TariffPerKg          = model.TariffPerKg,
                ScotchCostEdited     = model.ScotchCostEdited,
                FactureCostEdited    = model.FactureCostEdited,
                FactureCostExEdited  = model.FactureCostExEdited,
                TransitCostEdited    = model.TransitCostEdited,
                PickupCostEdited     = model.PickupCostEdited,
                SenderId             = model.SenderId,
                ForwarderId          = GetForwarderId(model.ForwarderId, transit.CityId, null),
                SenderRate           = null,
                InsuranceRate        = model.InsuranceRate / 100,
                CountInInvoce        = model.CountInInvoce,
                DocumentWeight       = model.DocumentWeight,
                MRN      = model.MRN,
                Comments = model.Comments
            };

            return(_editor.Add(data));
        }
예제 #6
0
        public long Add(ApplicationClientModel application, TransitEditModel transit, long clientId)
        {
            var transitId = _transits.Add(transit, null);

            var forwarderId = _forwarders.GetByCityOrAny(transit.CityId, null);

            var client = _clients.Get(clientId);

            var data = new ApplicationEditData
            {
                Class                = null,
                TransitId            = transitId,
                Invoice              = application.Invoice,
                Characteristic       = application.Characteristic,
                AddressLoad          = application.AddressLoad,
                WarehouseWorkingTime = application.WarehouseWorkingTime,
                Weight               = application.Weight,
                Count                = application.Count,
                Volume               = application.Volume,
                TermsOfDelivery      = application.TermsOfDelivery,
                Value                = application.Currency.Value,
                CurrencyId           = application.Currency.CurrencyId,
                CountryId            = application.CountryId,
                FactoryName          = application.FactoryName,
                FactoryPhone         = application.FactoryPhone,
                FactoryEmail         = application.FactoryEmail,
                FactoryContact       = application.FactoryContact,
                MarkName             = application.MarkName,
                MethodOfDelivery     = application.MethodOfDelivery,
                IsPickup             = application.IsPickup,
                AirWaybillId         = null,
                DateInStock          = null,
                DateOfCargoReceipt   = null,
                TransitReference     = null,
                ClientId             = clientId,
                PickupCost           = client.PickupCost,
                TransitCost          = client.TransitCost,
                FactureCost          = client.FactureCost,
                FactureCostEx        = client.FactureCostEx,
                TariffPerKg          = client.TariffPerKg,
                ScotchCostEdited     = client.ScotchCostEdited,
                FactureCostEdited    = null,
                FactureCostExEdited  = null,
                TransitCostEdited    = null,
                PickupCostEdited     = null,
                SenderId             = client.DefaultSenderId,
                SenderRate           = null,
                ForwarderId          = forwarderId,
                InsuranceRate        = client.InsuranceRate ?? _applications.GetDefaultInsuranceRate()
            };

            return(_updater.Add(data));
        }
예제 #7
0
        public void Update(long applicationId, ApplicationClientModel application, TransitEditModel transit)
        {
            var data = _applications.Get(applicationId);

            _transits.Update(data.TransitId, transit, null, applicationId);

            var forwarderId = _forwarders.GetByCityOrAny(transit.CityId, data.ForwarderId);

            Map(application, data, forwarderId);

            _updater.Update(applicationId, data);
        }
예제 #8
0
        public void Update(long transitId, TransitEditModel transit, long?forsedCarrierId, long?applicationId)
        {
            var data = _transits.Get(transitId).Single();

            var carrierId = GetCarrier(forsedCarrierId, transit.CityId, data.CarrierId);

            if (applicationId.HasValue && data.CarrierId != carrierId)
            {
                _events.Add(applicationId.Value, EventType.SetCarrier, EventState.Emailing);
            }

            TransitMapper.Map(transit, data, carrierId);

            _transits.Update(data);
        }
예제 #9
0
        public void Update(long clientId, ClientModel model, TransitEditModel transit)
        {
            var data      = _clients.Get(clientId);
            var userId    = data.UserId;
            var transitId = data.TransitId;

            if (!_permissions.HaveAccessToClient(data))
            {
                throw new AccessForbiddenException();
            }

            var clientEditData = GetData(model);

            Update(clientId, clientEditData, transitId, transit, userId, model.Authentication);
        }
예제 #10
0
        public virtual ActionResult Edit(
            long id,
            ApplicationClientModel model,
            [Bind(Prefix = "Transit")] TransitEditModel transitModel)
        {
            if (!ModelState.IsValid)
            {
                BindBag(id, GetClientId());

                return(View(model));
            }

            _manager.Update(id, model, transitModel);

            return(RedirectToAction(MVC.ClientApplication.Edit(id)));
        }
예제 #11
0
        public virtual ActionResult Create(ClientModel model, [Bind(Prefix = "Transit")] TransitEditModel transitModel)
        {
            if (!EmailsHelper.Validate(model.Emails))
            {
                ModelState.AddModelError("Emails", @"Emails format is invalid");
            }

            if (!ModelState.IsValid)
            {
                BindBag(null);

                return(View());
            }

            long clientId        = 0;
            var  passwordDefined = !string.IsNullOrWhiteSpace(model.Authentication.NewPassword);

            if (passwordDefined)
            {
                try
                {
                    clientId = _manager.Add(model, transitModel);

                    if (model.ContractFile != null)
                    {
                        MergeContract(model, clientId);
                    }
                }
                catch (DublicateLoginException)
                {
                    ModelState.AddModelError("Login", Validation.LoginExists);
                }
            }
            else
            {
                ModelState.AddModelError("NewPassword", Validation.EmplyPassword);
            }

            if (!ModelState.IsValid)
            {
                BindBag(null);

                return(View());
            }

            return(RedirectToAction(MVC.Client.Edit(clientId)));
        }
예제 #12
0
        public void Update(long applicationId, ApplicationAdminModel model, TransitEditModel transit)
        {
            var data = _applications.Get(applicationId);

            _transitService.Update(data.TransitId, transit, model.CarrierId, applicationId);

            data.Invoice              = model.Invoice;
            data.Characteristic       = model.Characteristic;
            data.AddressLoad          = model.AddressLoad;
            data.WarehouseWorkingTime = model.WarehouseWorkingTime;
            data.Weight              = model.Weight;
            data.Count               = model.Count;
            data.Volume              = model.Volume;
            data.TermsOfDelivery     = model.TermsOfDelivery;
            data.Value               = model.Currency.Value;
            data.CurrencyId          = model.Currency.CurrencyId;
            data.CountryId           = model.CountryId;
            data.FactoryName         = model.FactoryName;
            data.FactoryPhone        = model.FactoryPhone;
            data.FactoryEmail        = model.FactoryEmail;
            data.FactoryContact      = model.FactoryContact;
            data.MarkName            = model.MarkName;
            data.IsPickup            = model.IsPickup;
            data.MethodOfDelivery    = model.MethodOfDelivery;
            data.FactureCost         = model.FactureCost;
            data.FactureCostEx       = model.FactureCostEx;
            data.TransitCost         = model.TransitCost;
            data.PickupCost          = model.PickupCost;
            data.TariffPerKg         = model.TariffPerKg;
            data.FactureCostEdited   = model.FactureCostEdited;
            data.FactureCostExEdited = model.FactureCostExEdited;
            data.TransitCostEdited   = model.TransitCostEdited;
            data.PickupCostEdited    = model.PickupCostEdited;
            data.ScotchCostEdited    = model.ScotchCostEdited;
            data.SenderId            = model.SenderId;
            data.ForwarderId         = GetForwarderId(model.ForwarderId, transit.CityId, data.ForwarderId);
            data.InsuranceRate       = model.InsuranceRate / 100;
            data.CountInInvoce       = model.CountInInvoce;
            data.DocumentWeight      = model.DocumentWeight;
            data.MRN      = model.MRN;
            data.Comments = model.Comments;

            _editor.Update(applicationId, data);
        }
예제 #13
0
        public long Add(ClientModel client, TransitEditModel transit)
        {
            var data = GetData(client);

            using (var ts = new TransactionScope())
            {
                var transitId = _transits.Add(transit, null);

                var userId = _users.Add(client.Authentication.Login,
                                        client.Authentication.NewPassword,
                                        TwoLetterISOLanguageName.English);

                var clientId = _clients.Add(data, userId, transitId);

                ts.Complete();

                return(clientId);
            }
        }
예제 #14
0
        public virtual ActionResult Edit(
            long id,
            ApplicationAdminModel model,
            [Bind(Prefix = "Transit")] TransitEditModel transitModel)
        {
            if (!ModelState.IsValid)
            {
                var clientId = _applications.GetClientId(id);

                var data = _clients.Get(clientId);

                BindBag(id, data);

                return(View(model));
            }

            _manager.Update(id, model, transitModel);

            return(RedirectToAction(MVC.Application.Edit(id)));
        }
예제 #15
0
        private void Update(
            long clientId, ClientEditData clientEditData,
            long transitId, TransitEditModel transit,
            long userId, AuthenticationModel authentication)
        {
            using (var ts = new TransactionScope())
            {
                _transits.Update(transitId, transit, null, null);

                _clients.Update(clientId, clientEditData);

                _users.SetLogin(userId, authentication.Login);

                if (!string.IsNullOrWhiteSpace(authentication.NewPassword))
                {
                    _users.SetPassword(userId, authentication.NewPassword);
                }

                ts.Complete();
            }
        }
예제 #16
0
        public virtual ActionResult Edit(long?id, ClientModel model,
                                         [Bind(Prefix = "Transit")] TransitEditModel transitModel)
        {
            if (!EmailsHelper.Validate(model.Emails))
            {
                ModelState.AddModelError("Emails", @"Emails format is invalid");
            }

            if (!ModelState.IsValid)
            {
                BindBag(id);

                return(View());
            }

            var client = _clients.GetCurrentClientData(id);

            try
            {
                ClientCantChangeDefaultSenderId(model, client);
                ClientCantChangeCalculationSettings(model, client);

                _manager.Update(client.ClientId, model, transitModel);

                MergeContract(model, client.ClientId);
            }
            catch (DublicateLoginException)
            {
                ModelState.AddModelError("Login", Validation.LoginExists);
            }

            if (!ModelState.IsValid)
            {
                BindBag(id);

                return(View());
            }

            return(RedirectToAction(MVC.Client.Edit(client.ClientId)));
        }
예제 #17
0
        private void Validate(
            ActionResult result, ClientData clientData, ApplicationAdminModel model,
            TransitEditModel transitModel)
        {
            result.Should().BeOfType <RedirectToRouteResult>();

            var data = _applicationRepository.List(new[]
            {
                TestConstants.DefaultStateId
            },
                                                   new[]
            {
                new Order
                {
                    Desc      = true,
                    OrderType = OrderType.Id
                }
            },
                                                   1,
                                                   clientId: clientData.ClientId).First();

            Validate(clientData, model, transitModel, data);
        }
예제 #18
0
 public void Update(long clientId, ClientModel model, TransitEditModel transit)
 {
     _manager.Update(clientId, model, transit);
 }