public void CreatePattern(ContractPartnerViewModel pattern)
        {
            if (pattern != null)
            {
                var iloop    = 1;
                var patterns = pattern.PartnerPatterns;

                foreach (var patternM in patterns.Select(pat => new ContractPartnerPattern_M
                {
                    PartnerMainC = pattern.PartnerMainC,
                    PartnerSubC = pattern.PartnerSubC,
                    ApplyD = pattern.ApplyD,
                    DepartureC = pat.DepartureC,
                    DestinationC = pat.DestinationC,
                    ContainerSizeI = pat.ContainerSizeI,
                    UnitPrice = pat.UnitPrice,
                    CustomerMainC = pat.CustomerMainC,
                    CustomerSubC = pat.CustomerSubC,
                    CalculateByTon = pat.CalculateByTon,
                    DisplayLineNo = iloop++
                }))
                {
                    _contractPartnerPatternRepository.Add(patternM);
                }
            }

            SaveContractPartnerPattern();
        }
        public ContractPartnerViewModel GetContractPartnerPattern(string customerMainC, string customerSubC, DateTime applyD)
        {
            var tarriffs = (from p in _contractPartnerPatternRepository.GetAllQueryable()
                            join dp in _locationRepository.GetAllQueryable() on p.DepartureC equals dp.LocationC
                            join ds in _locationRepository.GetAllQueryable() on p.DestinationC equals ds.LocationC
                            join cus in _customerRepository.GetAllQueryable() on new { p.CustomerMainC, p.CustomerSubC } equals new { cus.CustomerMainC, cus.CustomerSubC } into dt
                            from cus in dt.DefaultIfEmpty()
                            where p.PartnerMainC == customerMainC &&
                            p.PartnerSubC == customerSubC && p.ApplyD == applyD
                            select new PartnerPatternViewModel
            {
                DepartureC = p.DepartureC,
                DepartureN = dp.LocationN,
                DestinationC = p.DestinationC,
                DestinationN = ds.LocationN,
                ContainerSizeI = p.ContainerSizeI,
                UnitPrice = p.UnitPrice,
                DisplayLineNo = p.DisplayLineNo,
                CustomerMainC = p.CustomerMainC,
                CustomerSubC = p.CustomerSubC,
                CustomerN = cus.CustomerN,
                CalculateByTon = p.CalculateByTon,
            }).OrderBy("DisplayLineNo asc, ContainerSizeI asc").ToList();

            var model = new ContractPartnerViewModel
            {
                PartnerMainC = customerMainC,
                PartnerSubC  = customerSubC,
                PartnerN     =
                    _partnerRepository.Query(i => i.PartnerMainC == customerMainC && i.PartnerSubC == customerSubC)
                    .Select(i => i.PartnerN)
                    .FirstOrDefault(),
                ApplyD          = applyD,
                PartnerPatterns = tarriffs
            };

            if (tarriffs.Count > 0)
            {
                model.PatternIndex = FindIndex(customerMainC, customerSubC, applyD);
            }

            return(model);
        }
 public void Put(ContractPartnerViewModel pattern)
 {
     _contractPartnerPatternService.UpdatePattern(pattern);
 }
 public void Post(ContractPartnerViewModel pattern)
 {
     _contractPartnerPatternService.CreatePattern(pattern);
 }