private static DeliveryTimeWindow GenerateDeliveryTimeWindow()
        {
            DeliveryTime deliveryTimeFrom = new DeliveryTime
            {
                Hour   = 3,
                Minute = 30
            };

            DeliveryTime deliveryTimeTo = new DeliveryTime
            {
                Hour   = 23,
                Minute = 45
            };

            List <DeliveryDay> deliveryDays = new List <DeliveryDay>
            {
                DeliveryDay.MONDAY,
                DeliveryDay.TUESDAY,
                DeliveryDay.WEDNESDAY,
                DeliveryDay.THURSDAY,
                DeliveryDay.FRIDAY,
                DeliveryDay.SATURDAY,
                DeliveryDay.SUNDAY
            };

            DeliveryTimeWindow deliveryTimeWindow = new DeliveryTimeWindow
            {
                From = deliveryTimeFrom,
                To   = deliveryTimeTo,
                Days = deliveryDays
            };

            return(deliveryTimeWindow);
        }
Ejemplo n.º 2
0
        public void WriteDeliveryTime(dynamic deliveryTime, string node)
        {
            if (deliveryTime == null)
            {
                return;
            }

            DeliveryTime entity = deliveryTime.Entity;

            if (node.HasValue())
            {
                _writer.WriteStartElement(node);
            }

            _writer.Write("Id", entity.Id.ToString());
            _writer.Write("Name", (string)deliveryTime.Name);
            _writer.Write("DisplayLocale", entity.DisplayLocale);
            _writer.Write("ColorHexValue", entity.ColorHexValue);
            _writer.Write("DisplayOrder", entity.DisplayOrder.ToString());

            WriteLocalized(deliveryTime);

            if (node.HasValue())
            {
                _writer.WriteEndElement();
            }
        }
Ejemplo n.º 3
0
        public int GetDeliveryTime()
        {
            TimeSpan ts  = DeliveryTime.Subtract(DateTime.Now);
            int      dif = ts.Days / 7;

            return(dif);
        }
Ejemplo n.º 4
0
 public void UpdateLocales(DeliveryTime deliveryTime, DeliveryTimeModel model)
 {
     foreach (var localized in model.Locales)
     {
         _localizedEntityService.SaveLocalizedValue(deliveryTime, x => x.Name, localized.Name, localized.LanguageId);
     }
 }
Ejemplo n.º 5
0
        public virtual void UpdateDeliveryTime(DeliveryTime deliveryTime)
        {
            if (deliveryTime == null)
            {
                throw new ArgumentNullException("deliveryTime");
            }

            _deliveryTimeRepository.Update(deliveryTime);
        }
Ejemplo n.º 6
0
        public void ToString_should_format_it_with_a_dash_in_between()
        {
            const int min = 1;
            const int max = 3;

            var deliveryTime = new DeliveryTime(min, max);

            deliveryTime.ToString().Should().Be($"{min} - {max}");
        }
 public void UpdateDeliveryTime(DeliveryTime deliveryTime)
 {
     if (deliveryTime.Id == 0)
     {
         context.Add(deliveryTime);
     }
     SetAuditFields(deliveryTime);
     context.SaveChanges();
 }
 public static DeliveryTimeViewModel FromDeliveryTime(DeliveryTime deliveryTime)
 {
     return(new DeliveryTimeViewModel
     {
         DayOfWeek = deliveryTime.DayOfWeek,
         Start = (int)deliveryTime.Start.TotalMinutes,
         End = (int)deliveryTime.End.TotalMinutes
     });
 }
Ejemplo n.º 9
0
        public void Should_have_correct_min_and_max_delivery_time()
        {
            const int min = 1;
            const int max = 3;

            var deliveryTime = new DeliveryTime(min, max);

            deliveryTime.MinDeliveryWorkingDays.Should().Be(min);
            deliveryTime.MaxDeliveryWorkingDays.Should().Be(max);
        }
        public DeliveryTimeItemVM(DeliveryTime model)
        {
            if (model == null)
            {
                throw new ArgumentNullException(nameof(model));
            }

            Id   = model.Id;
            Name = model.Name;
        }
Ejemplo n.º 11
0
        public virtual void UpdateDeliveryTime(DeliveryTime deliveryTime)
        {
            if (deliveryTime == null)
            {
                throw new ArgumentNullException("deliveryTime");
            }

            _deliveryTimeRepository.Update(deliveryTime);

            //event notification
            _eventPublisher.EntityUpdated(deliveryTime);
        }
Ejemplo n.º 12
0
 public Invoice(Identity id, Customer customer, DeliveryTime deliveryTime, Price totalPrice, Note note,
                Weight weightTotal, Code code, IEnumerable <InvoiceItem> items)
 {
     Id           = id;
     Customer     = customer;
     DeliveryTime = deliveryTime;
     Note         = note;
     WeightTotal  = weightTotal;
     TotalPrice   = totalPrice;
     Items        = items;
     Code         = code;
 }
Ejemplo n.º 13
0
        public virtual (DateTime?minDate, DateTime?maxDate) GetDeliveryDate(DeliveryTime deliveryTime, DateTime fromDate)
        {
            var minDate = deliveryTime?.MinDays != null
                ? AddDays(fromDate, deliveryTime.MinDays.Value)
                : (DateTime?)null;

            var maxDate = deliveryTime?.MaxDays != null
                ? AddDays(fromDate, deliveryTime.MaxDays.Value)
                : (DateTime?)null;

            return(minDate, maxDate);
        }
Ejemplo n.º 14
0
        public virtual void SetToDefault(DeliveryTime deliveryTime)
        {
            Guard.NotNull(deliveryTime, nameof(deliveryTime));

            var deliveryTimes = GetAllDeliveryTimes();

            foreach (var time in deliveryTimes)
            {
                time.IsDefault = time.Equals(deliveryTime) ? true : false;
                _deliveryTimeRepository.Update(time);
            }
        }
Ejemplo n.º 15
0
        private async Task <DeliveryTime> ProcessDeliveryTime(string deliveredIn)
        {
            var deliveredInValues = deliveredIn.Split(' ')[0].Split('-').Select(a => int.Parse(a)).Select(a => TimeSpan.FromDays(a));
            var deliveryTime      = await _get.Get <DeliveryTime>(d => d.From == deliveredInValues.ElementAt(0).Ticks && d.To == deliveredInValues.ElementAt(1).Ticks);

            if (deliveryTime == null)
            {
                deliveryTime = new DeliveryTime(deliveredInValues.ElementAt(0), deliveredInValues.ElementAt(1));
                await _save.Save(deliveryTime);
            }
            return(deliveryTime);
        }
Ejemplo n.º 16
0
        public static Supplier Create()
        {
            var coordinates = new Coordinates("133.15888", "4565566.8879879");

            var deliverytime = new DeliveryTime[2] {
                new DeliveryTime(new Time(12, 0), new Time(14, 0)),
                new DeliveryTime(new Time(17, 0), new Time(19, 0))
            };

            var businessTime = new BusinessTime(new Time(10, 0), new Time(22, 0));

            return(Create(businessTime, coordinates, deliverytime));
        }
Ejemplo n.º 17
0
        /// <summary>
        /// Updates the DeliveryTime
        /// </summary>
        /// <param name="deliveryTime">DeliveryTime</param>
        public virtual void UpdateDeliveryTime(DeliveryTime deliveryTime)
        {
            if (deliveryTime == null)
            {
                throw new ArgumentNullException("deliveryTime");
            }

            _deliveryTimeRepository.Update(deliveryTime);

            _cacheManager.RemoveByPattern(DELIVERYTIMES_PATTERN_KEY);

            //event notification
            _eventPublisher.EntityUpdated(deliveryTime);
        }
Ejemplo n.º 18
0
        private static dynamic ToDynamic(DeliveryTime deliveryTime, DataExporterContext ctx)
        {
            if (deliveryTime == null)
            {
                return(null);
            }

            dynamic result = new DynamicEntity(deliveryTime);

            result.Name       = ctx.GetTranslation(deliveryTime, nameof(deliveryTime.Name), deliveryTime.Name);
            result._Localized = GetLocalized(ctx, deliveryTime, x => x.Name);

            return(result);
        }
Ejemplo n.º 19
0
        public virtual void DeleteDeliveryTime(DeliveryTime deliveryTime)
        {
            if (deliveryTime == null)
            {
                throw new ArgumentNullException("deliveryTime");
            }

            if (this.IsAssociated(deliveryTime.Id))
            {
                throw new SmartException(T("Admin.Configuration.DeliveryTimes.CannotDeleteAssignedProducts"));
            }

            _deliveryTimeRepository.Delete(deliveryTime);
        }
Ejemplo n.º 20
0
        public virtual void SetToDefault(DeliveryTime deliveryTime)
        {
            if (deliveryTime == null)
            {
                throw new ArgumentNullException("deliveryTime");
            }

            var deliveryTimes = GetAllDeliveryTimes();

            foreach (var time in deliveryTimes)
            {
                time.IsDefault = time.Equals(deliveryTime) ? true : false;
                _deliveryTimeRepository.Update(time);
            }
        }
Ejemplo n.º 21
0
        public virtual void DeleteDeliveryTime(DeliveryTime deliveryTime)
        {
            if (deliveryTime == null)
            {
                return;
            }

            // Remove associations to deleted products.
            using (var scope = new DbContextScope(_productRepository.Context, autoDetectChanges: false, validateOnSave: false, hooksEnabled: false, autoCommit: false))
            {
                var productsQuery = _productRepository.Table.Where(x => x.Deleted && x.DeliveryTimeId == deliveryTime.Id);
                var productsPager = new FastPager <Product>(productsQuery, 500);

                while (productsPager.ReadNextPage(out var products))
                {
                    if (products.Any())
                    {
                        products.Each(x => x.DeliveryTimeId = null);
                        scope.Commit();
                    }
                }

                var attributeCombinationQuery =
                    from ac in _attributeCombinationRepository.Table
                    join p in _productRepository.Table on ac.ProductId equals p.Id
                    where p.Deleted && ac.DeliveryTimeId == deliveryTime.Id
                    select ac;
                var attributeCombinationPager = new FastPager <ProductVariantAttributeCombination>(attributeCombinationQuery, 1000);

                while (attributeCombinationPager.ReadNextPage(out var attributeCombinations))
                {
                    if (attributeCombinations.Any())
                    {
                        attributeCombinations.Each(x => x.DeliveryTimeId = null);
                        scope.Commit();
                    }
                }
            }

            // Warn if there are associations to active products.
            if (IsAssociated(deliveryTime.Id))
            {
                throw new SmartException(T("Admin.Configuration.DeliveryTimes.CannotDeleteAssignedProducts"));
            }

            _deliveryTimeRepository.Delete(deliveryTime);
        }
Ejemplo n.º 22
0
        /// <summary>
        /// Deletes DeliveryTime
        /// </summary>
        /// <param name="currency">DeliveryTime</param>
        public virtual void DeleteDeliveryTime(DeliveryTime deliveryTime)
        {
            if (deliveryTime == null)
            {
                throw new ArgumentNullException("deliveryTime");
            }

            //if (this.IsAssociated(deliveryTime.Id))
            //    throw new WorkException("The delivery time cannot be deleted. It has associated product variants");

            _deliveryTimeRepository.Delete(deliveryTime);

            _cacheManager.RemoveByPattern(DELIVERYTIMES_PATTERN_KEY);

            //event notification
            _eventPublisher.EntityDeleted(deliveryTime);
        }
Ejemplo n.º 23
0
        private uint CalculateMailCost(DeliveryTime time, List <Item> items)
        {
            GameFormulaEntry GetMailParameters()
            {
                if (items.Count == 0)
                {
                    return(GameTableManager.Instance.GameFormula.GetEntry(860));
                }

                return(time switch
                {
                    DeliveryTime.Instant => GameTableManager.Instance.GameFormula.GetEntry(861),
                    DeliveryTime.Hour => GameTableManager.Instance.GameFormula.GetEntry(862),
                    DeliveryTime.Day => GameTableManager.Instance.GameFormula.GetEntry(863),
                    _ => null
                });
            }
Ejemplo n.º 24
0
        private uint CalculateMailCost(DeliveryTime time, List <Item> items)
        {
            GameFormulaEntry GetMailParameters()
            {
                if (items.Count == 0)
                {
                    return(GameTableManager.Instance.GameFormula.GetEntry(860));
                }

                switch (time)
                {
                case DeliveryTime.Instant:
                    return(GameTableManager.Instance.GameFormula.GetEntry(861));

                case DeliveryTime.Hour:
                    return(GameTableManager.Instance.GameFormula.GetEntry(862));

                case DeliveryTime.Day:
                    return(GameTableManager.Instance.GameFormula.GetEntry(863));
                }

                return(null);
            }

            GameFormulaEntry parameters = GetMailParameters();
            uint             cost       = parameters.Dataint0;

            foreach (Item item in items)
            {
                cost += parameters.Dataint01;
                // only instant delivery speed takes item worth into consideration
                if (parameters.Datafloat01 > 0.0f)
                {
                    if (item.GetVendorSellCurrency(0) == CurrencyType.Credits)
                    {
                        cost += (uint)(item.GetVendorSellAmount(0) * parameters.Datafloat01);
                    }
                    if (item.GetVendorSellCurrency(1) == CurrencyType.Credits)
                    {
                        cost += (uint)(item.GetVendorSellAmount(1) * parameters.Datafloat01);
                    }
                }
            }

            return(cost);
        }
Ejemplo n.º 25
0
 public ActionResult Create(FormCollection form, CreateEditViewModel model)
 {
     if (ModelState.IsValid)
     {
         try
         {
             var deliveryTime = new DeliveryTime();
             Mapper.DynamicMap(model, deliveryTime);
             deliveryTimeProvider.UpdateDeliveryTime(deliveryTime);
             return(RedirectToAction("Index"));
         }
         catch (Exception ex)
         {
             HandleException(ex);
         }
     }
     return(RedirectToAction("Create"));
 }
Ejemplo n.º 26
0
        /// <summary>
        /// Send mail to self from a creature.
        /// </summary>
        public void SendMail(uint creatureId, DeliveryTime time, uint subject, uint body, IEnumerable <uint> itemIds)
        {
            if (GameTableManager.Instance.Creature2.GetEntry(creatureId) == null)
            {
                throw new ArgumentException($"Invalid creature {creatureId} for mail sender!");
            }

            if (GameTableManager.Instance.LocalizedText.GetEntry(subject) == null)
            {
                throw new ArgumentException($"Invalid localised text {subject} for mail subject!");
            }

            if (GameTableManager.Instance.LocalizedText.GetEntry(body) == null)
            {
                throw new ArgumentException($"Invalid localised text {body} for mail body!");
            }

            var parameters = new MailParameters
            {
                MessageType          = SenderType.Creature,
                RecipientCharacterId = player.CharacterId,
                CreatureId           = creatureId,
                SubjectStringId      = subject,
                BodyStringId         = body,
                DeliveryTime         = time
            };

            var items = new List <Item>();

            foreach (uint itemId in itemIds)
            {
                Item2Entry itemEntry = GameTableManager.Instance.Item.GetEntry(itemId);
                if (itemEntry == null)
                {
                    throw new ArgumentException($"Invalid item {itemId} for mail attachment!");
                }

                var item = new Item(null, itemEntry);
                items.Add(item);
            }

            SendMail(parameters, items);
        }
Ejemplo n.º 27
0
        public Article Build(InputData inputData)
        {
            var article = new Article
            {
                Code          = inputData.ArticleCode,
                ColourCode    = inputData.ColourCode,
                Description   = inputData.Description,
                DiscountPrice = Int32.Parse(inputData.DiscountPrice),
                Price         = Int32.Parse(inputData.Price)
            };

            // Check if DeliveryTime entity already exists; otherwise, create it.
            string deliveryTimeValue = inputData.DeliveryTime;

            if (!_deliveryTimes.TryGetValue(deliveryTimeValue, out DeliveryTime deliveryTime))
            {
                deliveryTime = new DeliveryTime {
                    Value = deliveryTimeValue
                };
                _deliveryTimes.Add(deliveryTimeValue, deliveryTime);
            }

            article.DeliveryTime = deliveryTime;

            // Check if Group entity already exists; otherwise, create it.
            string groupValue = inputData.Group;

            if (!_groups.TryGetValue(groupValue, out Group group))
            {
                group = new Group {
                    Value = groupValue
                };
                _groups.Add(groupValue, group);
            }

            article.Group = group;

            return(article);
        }
        public async Task <List <DeliveryTime> > Process(CommerceContext commerceContext, IEnumerable <string> itemIds, string primaryInventorySetId, string secondaryInventorySetId)
        {
            using (var activity = CommandActivity.Start(commerceContext, this))
            {
                var result = new List <DeliveryTime>();

                foreach (var itemId in itemIds)
                {
                    var inventoryInformations = new Dictionary <string, InventoryInformation>();

                    var sellableItemInventorySetArgument = new SellableItemInventorySetArgument(itemId, primaryInventorySetId);

                    var primaryInventory = await Commander.GetInventoryInformation(commerceContext, sellableItemInventorySetArgument);

                    sellableItemInventorySetArgument.InventorySetId = secondaryInventorySetId;
                    var secondaryInventory = await Commander.GetInventoryInformation(commerceContext, sellableItemInventorySetArgument);

                    var deliveryTime = new DeliveryTime(itemId);

                    result.Add(deliveryTime);

                    deliveryTime.DeliveryTimeInDays = -1;       // Don't know the delivery time

                    if (primaryInventory != null && primaryInventory.Quantity > 0)
                    {
                        deliveryTime.DeliveryTimeInDays = 1;
                        deliveryTime.AvailableQuantity  = primaryInventory.Quantity;
                    }
                    else if (secondaryInventory != null && secondaryInventory.Quantity > 0)
                    {
                        deliveryTime.DeliveryTimeInDays = 4;
                        deliveryTime.AvailableQuantity  = secondaryInventory.Quantity;
                    }
                }

                return(result ?? new List <DeliveryTime>());
            }
        }
Ejemplo n.º 29
0
 public static DeliveryTimeModel ToModel(this DeliveryTime entity)
 {
     return(Mapper.Map <DeliveryTime, DeliveryTimeModel>(entity));
 }
Ejemplo n.º 30
0
 public static DeliveryTime ToEntity(this DeliveryTimeModel model, DeliveryTime destination)
 {
     return(Mapper.Map(model, destination));
 }
Ejemplo n.º 31
0
 public List<DeliveryTime> LoadDeliveryTimes()
 {
     var list = new List<DeliveryTime>();
     using (var conn = new SqlConnection(_connectionString))
     {
         var cmd = conn.CreateCommand();
         cmd.CommandType = CommandType.StoredProcedure;
         cmd.CommandText = "LoadDeliveryTimes";
         conn.Open();
         var rd = cmd.ExecuteReader();
         if (rd.HasRows)
         {
             while (rd.Read())
             {
                 var model = new DeliveryTime()
                 {
                     Id = rd.GetInt32(0),
                     Value = rd.GetString(1)
                 };
                 list.Add(model);
             }
         }
         rd.Dispose();
     }
     return list;
 }