コード例 #1
0
        public decimal GetMoviePrice(LicensingModel licensingModel, CustomerStatus status, DateTime expirationDate)
        {
            decimal price;

            switch (licensingModel)
            {
            case LicensingModel.TwoDays:
                price = 4;
                break;

            case LicensingModel.LifeLong:
                price = 8;
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }

            if (
                status == CustomerStatus.Advanced &&
                expirationDate >= DateTime.UtcNow)
            {
                price = price * 0.75m;
            }

            return(price);
        }
コード例 #2
0
        public async Task <IActionResult> CreateAsync([FromBody] CreateMovieDto item)
        {
            if (item.Name == null || item.Name.Trim() == string.Empty)
            {
                return(Error("Name required"));
            }
            LicensingModel lmodel = (LicensingModel)item.LicensingModel;

            var movie = Movie.Create(item.Name, lmodel);
            await DocumentDBRepository <Movie> .CreateItemAsync(movie);

            return(Ok());
        }
コード例 #3
0
        public DateTime GetMovieExpirationDate(LicensingModel licensingModel, DateTime purchased)
        {
            switch (licensingModel)
            {
            case LicensingModel.TwoDays:
                return(purchased.AddDays(2));

            case LicensingModel.LifeLong:
                return(DateTime.MaxValue);

            default:
                throw new ArgumentOutOfRangeException();
            }
        }
コード例 #4
0
        public IPurchasedMovie Create(Customer customer, LicensingModel licensingModel, DateTime purchased)
        {
            switch (licensingModel)
            {
            case LicensingModel.TwoDays:
                return(new TwoDaysPurchasedMovie(customer, purchased));

            case LicensingModel.LifeLong:
                return(new LifeLongPurchasedMovie(customer, purchased));

            default:
                throw new ArgumentOutOfRangeException(nameof(licensingModel), licensingModel, "Unknown licensing model");
            }
        }
コード例 #5
0
        public static Movie Create(String name, LicensingModel lmodel)
        {
            if (name == null || name.Trim() == string.Empty)
            {
                throw new ArgumentException(nameof(name));
            }
            switch (lmodel)
            {
            case LicensingModel.TwoDays:
                return(new TwoDaysMovie(name));

            case LicensingModel.LifeLong:
                return(new LifeLongMovie(name));

            default:
                throw new ArgumentException(nameof(lmodel));
            }
        }
コード例 #6
0
        public DateTime?GetExpirationDate(LicensingModel licensingModel)
        {
            DateTime?result;

            switch (licensingModel)
            {
            case LicensingModel.TwoDays:
                result = DateTime.UtcNow.AddDays(2);
                break;

            case LicensingModel.LifeLong:
                result = null;
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }

            return(result);
        }
コード例 #7
0
        public ActionResult <string> SaveLicense(Guid token, LicensingModel licensingData)
        {
            if (!token.Equals(SecurityToken) || licensingData == null)
            {
                return(ActionResult <string> .SetError("非法的调用", licensingData == null? "提交数据不能为空" : "Token信息不正确"));
            }

            if (!licensingData.MachineCode.Equals(machineCode))
            {
                return(ActionResult <string> .SetError("非法的调用", "机器码不正确"));
            }

            var dataDecrypt = "";

            try
            {
                dataDecrypt = DecryptString(licensingData.License);
            }
            catch (Exception ex)
            {
                return(ActionResult <string> .SetError("授权序号错误", ex.Message));
            }
            var expirationDate = dataDecrypt.CastTo(DateTime.MinValue);

            if (expirationDate < DateTime.Now)
            {
                return(ActionResult <string> .SetError("授权序号已经过期", licensingData.License));
            }

            var secretkeyData = new SecretkeyData()
            {
                Ftp = new FtpSetting()
                {
                    Server   = licensingData.FtpServer,
                    Port     = licensingData.FtpPort,
                    UserID   = licensingData.FtpUserName,
                    Password = licensingData.FtpPassword
                },
                Database = new Dictionary <DbClientType, DbConnectionSetting>()
                {
                    {
                        DbClientType.MsSql,
                        new DbConnectionSetting()
                        {
                            Provider         = licensingData.Provider,
                            ConnectionString = licensingData.ConnectionString
                        }
                    }
                },
                ExtendSetting  = new Dictionary <string, string>(),
                DataType       = (SaveDataType)licensingData.SaveDataType,
                LicensingDate  = DateTime.Now,
                ExpirationDate = expirationDate
            };

            if (dbMode)
            {
                foreach (var dbConn in secretkeyData.Database)
                {
                    DbFactory.Initialization(
                        dbConn.Key,
                        dbConn.Value.Provider,
                        dbConn.Value.ConnectionString);


                    if (dbConn.Key == DbClientType.MsSql)
                    {
                        try
                        {
                            var now = DbFactory.Repository <DatabaseRepository>().GetServerDate(DateTime.Now);
                        }
                        catch (Exception ex)
                        {
                            return(ActionResult <string> .SetError($"数据库连接失败,{ex.Message}", dbConn.Value.ConnectionString)); //数据连接失败
                        }
                    }
                }
            }

            DbFactory.SetFtpSetting(
                secretkeyData.Ftp.Server,
                secretkeyData.Ftp.Port,
                secretkeyData.Ftp.UserID,
                secretkeyData.Ftp.Password);

            SaveSecretkey(secretkeyData);

            return(ActionResult <string> .SetSuccess("", licensingData.License));
        }
コード例 #8
0
ファイル: Movie.cs プロジェクト: vkhorikov/DddWorkshop
 public Movie(string name, LicensingModel licensingModel)
 {
     Name           = name;
     LicensingModel = licensingModel;
 }
コード例 #9
0
        private decimal CalculatePrice(CustomerStatus status, DateTime?statusExpirationDate, LicensingModel licensingModel)
        {
            decimal price;

            switch (licensingModel)
            {
            case LicensingModel.TwoDays:
                price = 4;
                break;

            case LicensingModel.LifeLong:
                price = 8;
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }

            if (status == CustomerStatus.Advanced && (statusExpirationDate == null || statusExpirationDate.Value >= DateTime.UtcNow))
            {
                price = price * 0.75m;
            }

            return(price);
        }
コード例 #10
0
		public PurchasedMovie(Customer customer, LicensingModel licensingModel, DateTime purchased)
		{
			Customer = customer;
			LicensingModel = licensingModel;
			Purchased = purchased;
		}