Пример #1
0
        public void TestHoneyFeatgure()
        {
            // arrange
            var honeyItem = new HoneyItem(4, 1, new Prize(3, 0), new Prize(1, 0), 0);
            var user      = new UserGameKey(-1, 103);
            var bet       = new SpinBet(user, PlatformType.None)
            {
                Lines      = 25,
                LineBet    = 1.0m,
                Multiplier = 1
            };
            var action = new Domain.Action(1, user, bet, 1, PlatformType.None);

            // action
            var state      = HoneyReducer.dispatch(action, honeyItem);
            var honeyState = state.BonusState as Honey;

            // Assert

            Assert.AreEqual(3, honeyState.Item.Count);
            Assert.AreEqual(1, honeyState.Item.CurrentStep);
            Assert.AreEqual(2, honeyState.Item.Pot.Count);
            Assert.AreEqual(1, honeyState.Item.Pot.CurrentStep);
            Assert.AreEqual(1, honeyState.Item.BeeHive.Count);
            Assert.AreEqual(0, honeyState.Item.BeeHive.CurrentStep);
            Assert.AreEqual(false, honeyState.Item.IsCompleted);
            Assert.IsTrue(state.Result.Win > 0);
        }
Пример #2
0
        public async Task <Action> Add(Action action)
        {
            if (!_addActionValidator.IsValidForAdd(action))
            {
                throw new Exception();
            }

            var request  = _requestBuilder.BuildAddActionRequest(action.ActivityId, action);
            var response = await _restClient.ExecuteTaskAsync <ApiAction>(request);

            _responseValidator.Validate(response);
            return(_actionConvertor.Convert(response.Data));
        }
Пример #3
0
        public void TestHoneyFreeSpinFeature()
        {
            // arrange
            var honeyItem         = new HoneyItem(4, 3, new Prize(0, 0), new Prize(1, 0), 0);
            var freeSpinItem      = new BonusItem(3, 3, new Prize(2, 0), 1);
            var honeyFreeSpinItem = new BearHoneyFreeSpin(honeyItem, freeSpinItem);
            var user = new UserGameKey(-1, 103);
            var bet  = new SpinBet(user, PlatformType.None)
            {
                Lines      = 25,
                LineBet    = 1.0m,
                Multiplier = 1
            };
            var action = new Domain.Action(1, user, bet, 1, PlatformType.None);

            // action
            var state = HoneyFreeSpinReducer.dispatch(action, honeyFreeSpinItem);

            // Assert
            Assert.AreEqual(false, state.BonusState.IsHoney);
            if (state.BonusState.IsHoneyFreeSpin)
            {
                var honeyFreeSpinState = state.BonusState as HoneyFreeSpin;
                var honey    = honeyFreeSpinState.Item.Honey;
                var freeSpin = honeyFreeSpinState.Item.FreeSpin;
                Assert.AreEqual(4, honey.Id);
                Assert.AreEqual(3, honey.Multiplier);
                Assert.AreEqual(0, honey.Pot.Count);
                Assert.AreEqual(1, honey.Pot.CurrentStep);
                Assert.AreEqual(1, honey.BeeHive.Count);
                Assert.AreEqual(0, honey.BeeHive.CurrentStep);
                Assert.AreEqual(false, honey.IsCompleted);

                Assert.AreEqual(3, freeSpin.Id);
                Assert.AreEqual(3, freeSpin.Multiplier);
                Assert.AreEqual(2, freeSpin.Prize.Count);
                Assert.AreEqual(0, freeSpin.Prize.CurrentStep);
                Assert.AreEqual(false, freeSpin.IsCompleted);
            }

            if (state.BonusState.IsFreeSpin)
            {
                var freeSpin = state.BonusState as FreeSpin;
                Assert.AreEqual(3, freeSpin.Item.Id);
                Assert.AreEqual(3, freeSpin.Item.Multiplier);
                Assert.AreEqual(2, freeSpin.Item.Prize.Count);
                Assert.AreEqual(0, freeSpin.Item.Prize.CurrentStep);
                Assert.AreEqual(false, freeSpin.Item.IsCompleted);
                Assert.AreEqual(state.Result.Win + freeSpinItem.CumulativeWin, freeSpin.Item.CumulativeWin);
            }
        }
Пример #4
0
        public void TestFreeSpinFeature()
        {
            // arrange
            var freeSpinItem = new BonusItem(3, 3, new Prize(15, 0), 0);
            var user         = new UserGameKey(-1, 103);
            var bet          = new SpinBet(user, PlatformType.None)
            {
                Lines      = 25,
                LineBet    = 1.0m,
                Multiplier = 1
            };
            var action = new Domain.Action(1, user, bet, 1, PlatformType.None);

            // action
            var state = FreeSpinReducer.dispatch(action, freeSpinItem);

            // Assert
            Assert.AreEqual(false, state.BonusState.IsHoney);
            if (state.BonusState.IsFreeSpin)
            {
                var freeSpinState = state.BonusState as FreeSpin;
                Assert.AreEqual(3, freeSpinState.Item.Id);
                Assert.AreEqual(3, freeSpinState.Item.Multiplier);
                Assert.AreEqual(true, freeSpinState.Item.IsStarted);
                Assert.AreEqual(14, freeSpinState.Item.Prize.Count);
                Assert.AreEqual(1, freeSpinState.Item.Prize.CurrentStep);
                Assert.AreEqual(false, freeSpinState.Item.IsCompleted);
            }

            if (state.BonusState.IsHoneyFreeSpin)
            {
                var honeyFreeSpinState = state.BonusState as HoneyFreeSpin;
                Assert.AreEqual(4, honeyFreeSpinState.Item.Honey.Id);
                Assert.AreEqual(3, honeyFreeSpinState.Item.Honey.Multiplier);
                Assert.AreEqual(state.Result.Bonus.Count, honeyFreeSpinState.Item.Honey.Pot.Count);
                Assert.AreEqual(true, honeyFreeSpinState.Item.Honey.Pot.Count > 0 && honeyFreeSpinState.Item.Honey.Pot.Count < 6);
                Assert.AreEqual(0, honeyFreeSpinState.Item.Honey.Pot.CurrentStep);
                Assert.AreEqual(1, honeyFreeSpinState.Item.Honey.BeeHive.Count);
                Assert.AreEqual(0, honeyFreeSpinState.Item.Honey.BeeHive.CurrentStep);
                Assert.AreEqual(state.Result.Bonus.Count + 1, honeyFreeSpinState.Item.Honey.TotalSpin);
                Assert.AreEqual(14, honeyFreeSpinState.Item.FreeSpin.Prize.Count);
                Assert.AreEqual(1, honeyFreeSpinState.Item.FreeSpin.Prize.CurrentStep);
                Assert.AreEqual(3, honeyFreeSpinState.Item.FreeSpin.Multiplier);
                Assert.AreEqual(false, honeyFreeSpinState.Item.IsCompleted);
            }
        }
Пример #5
0
        public async Task <Tuple <bool, string> > UpdateEquipmentSMU(long equipmentId, long currentReading, long userId, DateTime dateReadSMU)
        {
            var equipment = await this._context.EQUIPMENTs.FindAsync(equipmentId);

            if (equipment == null)
            {
                return(Tuple.Create(false, "Failed to find equipment. "));
            }
            var userIntId         = Convert.ToInt32(userId);
            var equipmentIntId    = Convert.ToInt32(equipmentId);
            var currentReadingInt = Convert.ToInt32(currentReading);



            var operationResult = false;
            var message         = "";
            var ucUser          = new Domain.TTDevUser(new SharedContext(), userIntId).getUCUser();

            using (var action = new Domain.Action
                                    (new UndercarriageContext(),
                                    new Domain.EquipmentActionRecord
            {
                ActionDate = dateReadSMU,
                ActionUser = ucUser,
                EquipmentId = equipmentIntId,
                ReadSmuNumber = currentReadingInt,
                TypeOfAction = Domain.ActionType.SMUReadingAction,
            }))
            {
                if (action.Operation.Start() == Domain.ActionStatus.Started)
                {
                    if (action.Operation.Validate() == Domain.ActionStatus.Valid)
                    {
                        if (action.Operation.Commit() == Domain.ActionStatus.Succeed)
                        {
                            operationResult = true;
                        }
                    }
                }
                message = action.Operation.Message;
            }
            return(Tuple.Create(operationResult, message));
        }
Пример #6
0
        public async Task <Tuple <bool, string> > ChangeMeterUnit(long equipmentId, long oldSmuReading, long smuOnNewMeter, long userId, DateTime dateReplaced)
        {
            var equipment = await this._context.EQUIPMENTs.FindAsync(equipmentId);

            if (equipment == null)
            {
                return(Tuple.Create(false, "Failed to find equipment. "));
            }


            var operationResult = false;
            var message         = "";
            var ucUser          = new Domain.TTDevUser(new SharedContext(), (int)userId).getUCUser();

            using (var action = new Domain.Action
                                    (new UndercarriageContext(),
                                    new Domain.EquipmentActionRecord
            {
                ActionDate = dateReplaced,
                ActionUser = ucUser,
                EquipmentId = (int)equipmentId,
                ReadSmuNumber = (int)oldSmuReading,
                TypeOfAction = Domain.ActionType.ChangeMeterUnit,
            }, new Domain.ChangeMeterUnitParams {
                Id = (int)equipmentId,
                SMUnew = (int)smuOnNewMeter
            }))
            {
                if (action.Operation.Start() == Domain.ActionStatus.Started)
                {
                    if (action.Operation.Validate() == Domain.ActionStatus.Valid)
                    {
                        if (action.Operation.Commit() == Domain.ActionStatus.Succeed)
                        {
                            operationResult = true;
                        }
                    }
                }
                message = action.Operation.Message;
            }
            return(Tuple.Create(operationResult, message));
        }
Пример #7
0
 public ActionDTO(Domain.Action action)
 {
     this.Id        = action.Id;
     this.CommentId = action.CommentId;
     this.Text      = action.Text;
 }
Пример #8
0
        public ActionStatus Commit()
        {
            if (Status != ActionStatus.Valid)
            {
                ActionLog += "Operation Status is not valid" + Environment.NewLine;
                Status     = ActionStatus.Failed;
                return(Status);
            }
            var Components          = _context.GENERAL_EQ_UNIT.Where(m => m.module_ucsub_auto == Params.Id);
            var paramsId            = Params.Components.Select(n => n.Id).ToList();
            var removiongComponents = _context.GENERAL_EQ_UNIT.Where(m => m.module_ucsub_auto == Params.Id && !paramsId.Any(k => m.equnit_auto == k));
            var childToBeRemoved    = new List <GENERAL_EQ_UNIT>();

            foreach (var parent in removiongComponents)
            {
                var childComparts = new Compart(_context, parent.compartid_auto).getChildComparts().Select(m => m.compartid_auto);
                childToBeRemoved.AddRange(Components.Where(m => childComparts.Any(k => k == m.compartid_auto)).ToList());
            }
            removiongComponents.ToList().AddRange(childToBeRemoved);
            //All child components will be removed automatically
            if (removeComponents(removiongComponents.GroupBy(m => m.equnit_auto).Select(m => m.FirstOrDefault()).ToList()))
            {
                //Components which are not in the list of current components should be removed from installed components!
                //Just for monitoring purposes
                string message = "";
                message += "Components removed successfully";
            }


            //↓↓↓↓↓ Adding all child compartments
            List <ComponentSetup> ChildsList = new List <ComponentSetup>();

            foreach (var cmpnt in Params.Components.OrderBy(m => m.InstallDate))
            {
                var childCompartments = _context.COMPART_PARENT_RELATION.Where(m => m.ParentCompartId == cmpnt.Compart.Id).Select(m => m.ParentCompartment).ToList();
                int childPos          = cmpnt.Pos + 1;
                foreach (var childCompart in childCompartments)
                {
                    ChildsList.Add(new ComponentSetup
                    {
                        Brand      = cmpnt.Brand,
                        BudgetLife = cmpnt.BudgetLife,
                        Compart    = new CompartV {
                            Id = childCompart.compartid_auto, CompartStr = childCompart.compartid, CompartTitle = childCompart.compart, CompartType = new CompartTypeV {
                                Id = childCompart.comparttype_auto, Title = childCompart.LU_COMPART_TYPE.comparttype, Order = childCompart.LU_COMPART_TYPE.sorder ?? 1
                            }
                        },
                        EquipmentSMU   = cmpnt.EquipmentSMU,
                        Grouser        = cmpnt.Grouser,
                        HoursAtInstall = cmpnt.HoursAtInstall,
                        Id             = 0,
                        InstallCost    = 0,
                        InstallDate    = cmpnt.InstallDate.ToLocalTime().Date,
                        Note           = cmpnt.Note,
                        Pos            = childPos,
                        Result         = new ResultMessage(),
                        ShoeSize       = cmpnt.ShoeSize,
                        SystemId       = cmpnt.SystemId,
                        Validity       = cmpnt.Validity,
                        listPosition   = -1,
                        Points         = -1
                    });
                    childPos++;
                }
            }
            Params.Components.AddRange(ChildsList);
            //↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑

            foreach (var comp in Params.Components.Where(m => m.Id == 0))
            {
                var componentParam = new SetupComponentParams
                {
                    BudgetLife = comp.BudgetLife,
                    CMU        = comp.HoursAtInstall,
                    CompartId  = comp.Compart.Id,
                    Cost       = comp.InstallCost,
                    Id         = comp.Id,
                    Life       = comp.HoursAtInstall,
                    UserId     = Params.UserId,
                    UserName   = _current.ActionUser.userName
                };
                if (comp.Id == 0) //New Component Added
                {
                    var LogicalComponent = new Component(new UndercarriageContext());
                    comp.Result = LogicalComponent.CreateNewComponent(comp, _current.ActionUser.Id, _current.ActionUser.userName).Result;
                    if (comp.Result.OperationSucceed)
                    {
                        IEquipmentActionRecord EquipmentActionForComp = new BLL.Core.Domain.EquipmentActionRecord
                        {
                            EquipmentId   = Params.EquipmentId,
                            ReadSmuNumber = comp.EquipmentSMU,
                            TypeOfAction  = ActionType.InstallComponentOnSystemOnEquipment,
                            ActionDate    = comp.InstallDate.ToLocalTime().Date,
                            ActionUser    = _current.ActionUser,
                            Cost          = comp.InstallCost,
                            Comment       = "Component Setup in Update Undercarriage Setup",
                        };
                        using (Domain.Action compAction = new Domain.Action(new UndercarriageContext(), EquipmentActionForComp, new BLL.Core.Domain.InstallComponentOnSystemParams {
                            Id = LogicalComponent.Id, Position = (byte)comp.Pos, SystemId = Params.Id, side = Params.Side
                        }))
                        {
                            if (compAction.Operation.Start() == ActionStatus.Started)
                            {
                                if (compAction.Operation.Validate() == ActionStatus.Valid)
                                {
                                    if (compAction.Operation.Commit() == ActionStatus.Succeed)
                                    {
                                        comp.Result.Id = compAction.Operation.UniqueId;
                                        comp.Result.OperationSucceed = true;
                                        comp.SystemId = Params.Id;
                                    }
                                }
                            }
                            comp.Result.LastMessage = compAction.Operation.Message;
                            comp.Result.ActionLog   = compAction.Operation.ActionLog;
                        }
                    }
                }
            }
            Available();
            UpdateLtds();
            AdjustLives();
            MakeExistingActionsAvailable();
            if (!MakeOtherSystemsOnline())
            {
                Status = ActionStatus.Failed;
            }
            else
            {
                Status = ActionStatus.Succeed;
            }
            return(Status);
        }
Пример #9
0
        public (bool Success, List <Domain.Action> actions) AddActions()
        {
            var ActionList = new List <Domain.Action> {
                new Domain.Action()
                {
                    Name           = "پروفایل",
                    ControllerName = "User",
                    ActionName     = "ProfileInfo",
                    Icon           = "zmdi zmdi-account",
                    OrderPriority  = 1,
                    ShowInMenu     = true,
                }
            };

            #region Acl Actions
            var parent = new Domain.Action()
            {
                Name          = "سطوح دسترسی",
                Icon          = "zmdi zmdi-assignment-account",
                OrderPriority = 50,
                ShowInMenu    = true,
            };
            _db.Set <Domain.Action>().Add(parent);
            if (_db.SaveChanges() == 0)
            {
                return(false, null);
            }

            #region Users Actions
            ActionList.Add(new Domain.Action()
            {
                ParentId       = parent.ActionId,
                Name           = "مدیریت کاربران",
                ControllerName = "User",
                ActionName     = "Manage",
                Icon           = "zmdi zmdi-accounts",
                OrderPriority  = 51,
                ShowInMenu     = true,
            });
            ActionList.Add(new Domain.Action()
            {
                ParentId       = parent.ActionId,
                Name           = "افزودن کاربر",
                ControllerName = "User",
                ActionName     = "Add",
                Icon           = "zmdi zmdi-account-add",
                OrderPriority  = 52,
                ShowInMenu     = false,
            });
            ActionList.Add(new Domain.Action()
            {
                ParentId       = parent.ActionId,
                Name           = "ویرایش کاربر",
                ControllerName = "User",
                ActionName     = "Update",
                Icon           = "zmdi zmdi-edit",
                OrderPriority  = 53,
                ShowInMenu     = false,
            });
            ActionList.Add(new Domain.Action()
            {
                ParentId       = parent.ActionId,
                Name           = "حذف کاربر",
                ControllerName = "User",
                ActionName     = "Delete",
                OrderPriority  = 54,
                Icon           = "zmdi zmdi-delete",
                ShowInMenu     = false,
            });
            #endregion
            #region Actions
            ActionList.Add(new Domain.Action()
            {
                ParentId       = parent.ActionId,
                Name           = "مدیریت اکشن ها",
                ControllerName = "Action",
                ActionName     = "Manage",
                Icon           = "zmdi zmdi-view-list",
                OrderPriority  = 55,
                ShowInMenu     = true,
            });
            ActionList.Add(new Domain.Action()
            {
                ParentId       = parent.ActionId,
                Name           = "افزودن اکشن",
                ControllerName = "Action",
                ActionName     = "Add",
                Icon           = "zmdi zmdi-account-add",
                OrderPriority  = 57,
                ShowInMenu     = false,
            });
            ActionList.Add(new Domain.Action()
            {
                ParentId       = parent.ActionId,
                Name           = "ویرایش اکشن",
                ControllerName = "Action",
                ActionName     = "Update",
                Icon           = "zmdi zmdi-edir",
                OrderPriority  = 58,
                ShowInMenu     = false,
            });
            ActionList.Add(new Domain.Action()
            {
                ParentId       = parent.ActionId,
                Name           = "حذف اکشن",
                ControllerName = "Action",
                ActionName     = "Delete",
                Icon           = "zmdi zmdi-account-add",
                OrderPriority  = 58,
                ShowInMenu     = false,
            });
            #endregion
            #region ActionInRole Actions
            ActionList.Add(new Domain.Action()
            {
                ParentId       = parent.ActionId,
                Name           = "افزودن اکشن به نقش",
                ControllerName = "ActionInRole",
                ActionName     = "Add",
                Icon           = "zmdi zmdi-collection-plus",
                OrderPriority  = 59,
                ShowInMenu     = false,
            });
            ActionList.Add(new Domain.Action()
            {
                ParentId       = parent.ActionId,
                Name           = "حذف اکشن از نقش",
                ControllerName = "ActionInRole",
                ActionName     = "Delete",
                Icon           = "zmdi zmdi-delete",
                OrderPriority  = 60,
                ShowInMenu     = false,
            });
            #endregion
            #region Role Actions
            ActionList.Add(new Domain.Action()
            {
                ParentId       = parent.ActionId,
                Name           = "مدیریت نقش ها",
                ControllerName = "Role",
                ActionName     = "Manage",
                Icon           = "zmdi zmdi-accounts-list",
                OrderPriority  = 61,
                ShowInMenu     = true,
            });
            ActionList.Add(new Domain.Action()
            {
                ParentId       = parent.ActionId,
                Name           = "افزودن نقش",
                ControllerName = "Role",
                ActionName     = "Add",
                OrderPriority  = 62,
                ShowInMenu     = false,
            });
            ActionList.Add(new Domain.Action()
            {
                ParentId       = parent.ActionId,
                Name           = "ویرایش نقش",
                ControllerName = "Role",
                ActionName     = "Update",
                OrderPriority  = 63,
                ShowInMenu     = false,
            });
            ActionList.Add(new Domain.Action()
            {
                ParentId       = parent.ActionId,
                Name           = "حذف نقش",
                ControllerName = "Role",
                ActionName     = "Delete",
                OrderPriority  = 64,
                ShowInMenu     = false,
            });
            #endregion
            #region UserInRole Actions
            ActionList.Add(new Domain.Action()
            {
                ParentId       = parent.ActionId,
                Name           = "افزودن نقش به کاربر",
                ControllerName = "UserInRole",
                ActionName     = "Add",
                Icon           = "zmdi zmdi-collection-plus",
                OrderPriority  = 59,
                ShowInMenu     = false,
            });
            ActionList.Add(new Domain.Action()
            {
                ParentId       = parent.ActionId,
                Name           = "حذف نقش از کاربر",
                ControllerName = "UserInRole",
                ActionName     = "Delete",
                Icon           = "zmdi zmdi-delete",
                OrderPriority  = 60,
                ShowInMenu     = false,
            });

            #endregion
            #endregion

            _db.Set <Domain.Action>().AddRange(ActionList);
            ActionList.Insert(0, parent);
            if (_db.SaveChanges() == 0)
            {
                return(false, null);
            }
            else
            {
                return(true, ActionList);
            }
        }