Пример #1
0
        public IActionResult GetTariff([FromQuery] TariffModel model)
        {
            if (!CommonMethods.GetTenant(model, out Tenant tenant))
            {
                Log.Error("Model without tenant");

                return(BadRequest(new
                {
                    error = "portalNameEmpty",
                    message = "PortalName is required"
                }));
            }

            if (tenant == null)
            {
                Log.Error("Tenant not found");

                return(BadRequest(new
                {
                    error = "portalNameNotFound",
                    message = "Portal not found"
                }));
            }

            return(GetTariff(tenant));
        }
Пример #2
0
        public IActionResult SetTariff(TariffModel model)
        {
            if (!CommonMethods.GetTenant(model, out Tenant tenant))
            {
                Log.Error("Model without tenant");

                return(BadRequest(new
                {
                    error = "portalNameEmpty",
                    message = "PortalName is required"
                }));
            }

            if (tenant == null)
            {
                Log.Error("Tenant not found");

                return(BadRequest(new
                {
                    error = "portalNameNotFound",
                    message = "Portal not found"
                }));
            }

            var quota = new TenantQuota(tenant.TenantId)
            {
                ActiveUsers  = 10000,
                Features     = model.Features ?? "",
                MaxFileSize  = 1024 * 1024 * 1024,
                MaxTotalSize = 1024L * 1024 * 1024 * 1024 - 1,
                Name         = "api",
            };

            if (model.ActiveUsers != default)
            {
                quota.ActiveUsers = model.ActiveUsers;
            }

            if (model.MaxTotalSize != default)
            {
                quota.MaxTotalSize = model.MaxTotalSize;
            }

            if (model.MaxFileSize != default)
            {
                quota.MaxFileSize = model.MaxFileSize;
            }

            HostedSolution.SaveTenantQuota(quota);

            var tariff = new Tariff
            {
                QuotaId = quota.Id,
                DueDate = model.DueDate != default ? model.DueDate : DateTime.MaxValue,
            };

            HostedSolution.SetTariff(tenant.TenantId, tariff);

            return(GetTariff(tenant));
        }
        public bool CheckAllowPermissionAction(Guid id, PermissionRange range)
        {
            var result = new TariffModel();

            result.setTariff = GetTariffById(id);
            if (result.setTariff == null)
            {
                return(false);
            }

            BaseUpdateModel baseModel = new BaseUpdateModel
            {
                UserCreated  = result.setTariff.UserCreated,
                CompanyId    = result.setTariff.CompanyId,
                DepartmentId = result.setTariff.DepartmentId,
                OfficeId     = result.setTariff.OfficeId,
                GroupId      = result.setTariff.GroupId
            };
            int code = PermissionExtention.GetPermissionCommonItem(baseModel, range, currentUser);

            if (code == 403)
            {
                return(false);
            }

            return(true);
        }
        public IActionResult GetTariff(Guid tariffId)
        {
            PermissionRange permissionRange;
            ICurrentUser    _user = PermissionExtention.GetUserMenuPermission(currentUser, Menu.settingTariff);

            permissionRange = PermissionExtention.GetPermissionRange(_user.UserMenuPermission.Detail);
            bool isAllowDelete = tariffService.CheckAllowPermissionAction(tariffId, permissionRange);

            if (isAllowDelete == false)
            {
                return(BadRequest(new ResultHandle {
                    Status = false, Message = stringLocalizer[LanguageSub.DO_NOT_HAVE_PERMISSION].Value
                }));
            }

            var result = new TariffModel();

            result.setTariff        = tariffService.GetTariffById(tariffId);
            result.setTariffDetails = tariffService.GetListTariffDetailByTariffId(tariffId)?.OrderBy(x => x.DatetimeCreated).ToList();
            if (result == null)
            {
                return(Ok(new ResultHandle {
                    Status = false, Message = "Không tìm thấy Tariff", Data = result
                }));
            }
            else
            {
                return(Ok(new ResultHandle {
                    Status = true, Message = "Success", Data = result
                }));
            }
        }
Пример #5
0
        /// <summary>
        /// Method to format currency
        /// </summary>
        /// <param name="src"></param>
        /// <returns></returns>
        private TariffModel FormatCurrency(TariffModel src)
        {
            src.MinimumHjeDisplay = String.Format("{0:N}", src.MinimumHJE);
            src.MaximumHjeDisplay = String.Format("{0:N}", src.MaximumHJE);
            src.TariffDisplay     = String.Format("{0:N}", src.Tariff);

            return(src);
        }
Пример #6
0
        public void GetOffers_ThrowsArgumentException_IfConsumptionIsLowerThanZero()
        {
            decimal     consumption = -100;
            TariffModel model       = new TariffModel();
            var         ex          = Assert.ThrowsException <ArgumentException>(() => model.GetOffers(consumption));

            Assert.AreEqual("Consumption should be non-negative", ex.Message);
        }
Пример #7
0
        private TariffModel InitializeTariffModel()
        {
            TariffModel model    = new TariffModel();
            ProductA    productA = new ProductA(productA_Name);
            ProductB    productB = new ProductB(productB_Name);

            model.AddProduct(productA);
            model.AddProduct(productB);
            return(model);
        }
Пример #8
0
 public ActionResult <bool> Save([FromBody] TariffModel tariff)
 {
     try
     {
         _tariffService.Submit(_mapper.Map <Tariff>(tariff));
         return(true);
     }
     catch (Exception exception)
     {
         return(this.StatusCode(StatusCodes.Status500InternalServerError, exception.Message));
     }
 }
        public IActionResult UpdateTariff(TariffModel model)
        {
            PermissionRange permissionRange;
            ICurrentUser    _user = PermissionExtention.GetUserMenuPermission(currentUser, Menu.settingTariff);

            permissionRange = PermissionExtention.GetPermissionRange(_user.UserMenuPermission.Write);

            if (permissionRange == PermissionRange.None)
            {
                return(BadRequest(new ResultHandle {
                    Status = false, Message = stringLocalizer[LanguageSub.DO_NOT_HAVE_PERMISSION].Value
                }));
            }

            bool code = tariffService.CheckAllowPermissionAction(model.setTariff.Id, permissionRange);

            if (code == false)
            {
                return(BadRequest(new ResultHandle {
                    Status = false, Message = stringLocalizer[LanguageSub.DO_NOT_HAVE_PERMISSION].Value
                }));
            }

            if (!ModelState.IsValid)
            {
                return(BadRequest());
            }

            var checkData = tariffService.CheckExistsDataTariff(model);

            if (!checkData.Success)
            {
                return(Ok(new ResultHandle {
                    Status = checkData.Success, Message = checkData.Exception.Message.ToString(), Data = checkData.Code
                }));
            }

            model.setTariff.UserModified = currentUser.UserID;
            var hs = tariffService.UpdateTariff(model);

            var message = HandleError.GetMessage(hs, Crud.Update);

            ResultHandle result = new ResultHandle {
                Status = hs.Success, Message = stringLocalizer[message].Value, Data = model
            };

            return(Ok(result));
        }
        public IActionResult CheckAllowDelete(Guid id)
        {
            PermissionRange permissionRange;
            ICurrentUser    _user  = null;
            var             result = new TariffModel();

            result.setTariff = tariffService.GetTariffById(id);
            if (result.setTariff == null)
            {
                return(Ok(false));
            }
            _user = PermissionExtention.GetUserMenuPermission(currentUser, Menu.settingTariff);

            permissionRange = PermissionExtention.GetPermissionRange(_user.UserMenuPermission.Delete);
            return(Ok(tariffService.CheckAllowPermissionAction(id, permissionRange)));
        }
Пример #11
0
        /// <summary>
        /// * Check tồn tại tariff. Check theo các field:
        /// - Tariff Name (Không được trùng tên),
        /// - Effective Date - Expried Date
        /// - Tariff Type, Product Service, Cargo Type,  Service Mode
        /// * Check list tariff detail không được phép trống
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public HandleState CheckExistsDataTariff(TariffModel model)
        {
            try
            {
                var hs = CheckDuplicateTariff(model.setTariff);
                if (!hs.Success)
                {
                    return(hs);
                }

                //Check list tariff detail không được phép trống
                if (model.setTariffDetails.Count == 0)
                {
                    return(new HandleState("Please add tariff to create new OPS tariff"));
                }

                return(new HandleState());
            }
            catch (Exception ex)
            {
                return(new HandleState(ex.Message));
            }
        }
Пример #12
0
        /// <summary>
        /// Add tariff & list tariff detail
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public HandleState AddTariff(TariffModel model)
        {
            try
            {
                var userCurrent = currentUser.UserID;
                var today       = DateTime.Now;

                model.setTariff.GroupId      = currentUser.GroupId;
                model.setTariff.DepartmentId = currentUser.DepartmentId;
                model.setTariff.OfficeId     = currentUser.OfficeID;
                model.setTariff.CompanyId    = currentUser.CompanyID;
                //Insert SetTariff
                var tariff = mapper.Map <SetTariff>(model.setTariff);
                tariff.Id              = model.setTariff.Id = Guid.NewGuid();
                tariff.UserCreated     = tariff.UserModified = userCurrent;
                tariff.DatetimeCreated = tariff.DatetimeModified = today;
                var hs = DataContext.Add(tariff);
                if (hs.Success)
                {
                    //Insert list SetTariffDetail
                    var tariffDetails = mapper.Map <List <SetTariffDetail> >(model.setTariffDetails);
                    tariffDetails.ForEach(r =>
                    {
                        r.Id              = Guid.NewGuid();
                        r.TariffId        = tariff.Id;
                        r.UserCreated     = r.UserModified = userCurrent;
                        r.DatetimeCreated = r.DatetimeModified = today;
                    });
                    var hsTariffDetail = setTariffDetailRepo.Add(tariffDetails);
                }
                return(hs);
            }
            catch (Exception ex)
            {
                return(new HandleState(ex.Message));
            }
        }
Пример #13
0
        public IActionResult SetTariff(TariffModel model)
        {
            if (model == null)
            {
                return(BadRequest(new
                {
                    errors = "PortalName is required."
                }));
            }

            if (!ModelState.IsValid)
            {
                var errors = new JArray();

                foreach (var k in ModelState.Keys)
                {
                    errors.Add(ModelState[k].Errors.FirstOrDefault().ErrorMessage);
                }

                return(BadRequest(new
                {
                    errors
                }));
            }

            var tenant = HostedSolution.GetTenant((model.PortalName ?? "").Trim());

            if (tenant == null)
            {
                return(BadRequest(new
                {
                    errors = "Tenant not found."
                }));
            }

            var quota = new TenantQuota(tenant.TenantId)
            {
                ActiveUsers  = 10000,
                Features     = model.Features ?? "",
                MaxFileSize  = 1024 * 1024 * 1024,
                MaxTotalSize = 1024L * 1024 * 1024 * 1024 - 1,
                Name         = "api",
            };

            if (model.ActiveUsers != default)
            {
                quota.ActiveUsers = model.ActiveUsers;
            }

            if (model.MaxTotalSize != default)
            {
                quota.MaxTotalSize = model.MaxTotalSize;
            }

            if (model.MaxFileSize != default)
            {
                quota.MaxFileSize = model.MaxFileSize;
            }

            HostedSolution.SaveTenantQuota(quota);

            var tariff = new Tariff
            {
                QuotaId = quota.Id,
                DueDate = model.DueDate != default ? model.DueDate : DateTime.MaxValue,
            };

            HostedSolution.SetTariff(tenant.TenantId, tariff);

            tariff = HostedSolution.GetTariff(tenant.TenantId, false);

            quota = HostedSolution.GetTenantQuota(tenant.TenantId);

            return(Ok(new
            {
                errors = "",
                tenant = ToTenantWrapper(tenant),
                tariff = ToTariffWrapper(tariff, quota)
            }));
        }
Пример #14
0
        /// <summary>
        /// Update tariff & list tariff model
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public HandleState UpdateTariff(TariffModel model)
        {
            try
            {
                var today = DateTime.Now;
                //Update SetTariff
                var tariff = mapper.Map <SetTariff>(model.setTariff);
                //var tariffCurrent = DataContext.Get(x => x.Id == tariff.Id).FirstOrDefault();
                //tariff.UserCreated = tariffCurrent.UserCreated;
                //tariff.DatetimeCreated = tariffCurrent.DatetimeCreated;
                tariff.DatetimeModified = today;

                var hs = DataContext.Update(tariff, x => x.Id == tariff.Id);
                if (hs.Success)
                {
                    var tariffDetails = mapper.Map <List <SetTariffDetail> >(model.setTariffDetails);

                    //Remove các tariff mà user đã gỡ bỏ
                    var listIdTariffDetail           = tariffDetails.Select(s => s.Id);
                    var listIdTariffDetailNeedRemove = setTariffDetailRepo.Get(x => x.TariffId == tariff.Id &&
                                                                               !listIdTariffDetail.Contains(x.Id)).Select(x => x.Id);
                    if (listIdTariffDetailNeedRemove.Count() > 0)
                    {
                        var hsTariffDetailDel = setTariffDetailRepo.Delete(x => listIdTariffDetailNeedRemove.Contains(x.Id));
                    }

                    //Update các tariff detail cũ
                    var tariffDetailOld = tariffDetails.Where(x => x.Id != Guid.Empty);
                    //&& setTariffDetailRepo.Get(g => g.TariffId == tariff.Id).Select(s => s.Id).Contains(x.Id));
                    if (tariffDetailOld.Count() > 0)
                    {
                        foreach (var item in tariffDetailOld)
                        {
                            //item.UserCreated = setTariffDetailRepo.Get(x => x.Id == item.Id).FirstOrDefault().UserCreated;
                            item.UserModified = model.setTariff.UserModified;
                            //item.DatetimeCreated = setTariffDetailRepo.Get(x => x.Id == item.Id).FirstOrDefault().DatetimeCreated;
                            item.DatetimeModified = DateTime.Now;
                            var hsTariffDetailUpdate = setTariffDetailRepo.Update(item, x => x.Id == item.Id);
                        }
                    }

                    //Add các tariff detail mới
                    var tariffDetailNew = tariffDetails.Where(x => x.Id == Guid.Empty).ToList();
                    if (tariffDetailNew.Count > 0)
                    {
                        tariffDetailNew.ForEach(r =>
                        {
                            r.Id              = Guid.NewGuid();
                            r.TariffId        = tariff.Id;
                            r.UserCreated     = r.UserModified = model.setTariff.UserModified;
                            r.DatetimeCreated = r.DatetimeModified = DateTime.Now;
                        });
                        var hsTariffDetailAdd = setTariffDetailRepo.Add(tariffDetailNew);
                    }
                }

                return(hs);
            }
            catch (Exception ex)
            {
                return(new HandleState(ex.Message));
            }
        }