コード例 #1
0
        public async Task <IActionResult> Edit(int id, [Bind("RedemptionId,Code,BookTitle,Isbn")] Redemption redemption)
        {
            if (id != redemption.RedemptionId)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(redemption);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!RedemptionExists(redemption.RedemptionId))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            return(View(redemption));
        }
コード例 #2
0
        public async Task <IActionResult> Create(
            CreateRedemptionViewModel redemptionViewModel)
        {
            if (this.ModelState.IsValid)
            {
                var selectedInstanceID = this.InstanceSelector.InstanceID;

                var redemption = new Redemption
                {
                    InstanceID       = selectedInstanceID,
                    RedemptionNumber = DataUtils.GenerateNumber(),
                    CreatedDate      = DateTime.UtcNow,
                    PointsRequired   = redemptionViewModel.PointsRequired
                };

                redemption.ModifiedDate = redemption.CreatedDate;

                if (redemptionViewModel != null)
                {
                    redemption.Name           = redemptionViewModel.Name;
                    redemption.PointsRequired = redemptionViewModel.PointsRequired;
                    redemption.Description    = redemptionViewModel.Description;
                }

                this.DatabaseContext.Add(redemption);

                await this.DatabaseContext.SaveChangesAsync();

                return(this.RedirectToAction(nameof(this.Index)));
            }

            return(this.View(redemptionViewModel));
        }
コード例 #3
0
        internal static void RunAction(Redemption redemption, JToken data)
        {
            try
            {
                var type = data["Action"].Value <int>();

                Log.Info($"RunAction: {redemption.Reward.Id} -> type: {type}");

                switch (type)
                {
                case 0:
                    break;

                case 1:
                    RavenMessageAction.Run(redemption, data);
                    break;

                case 2:
                    SpawnCreatureAction.Run(redemption, data);
                    break;

                case 3:
                    HUDMessageAction.Run(redemption, data);
                    break;

                default:
                    throw new ArgumentOutOfRangeException();
                }
            }
            catch (Exception ex)
            {
                Log.Error("RunAction Error >>> " + ex.ToString());
            }
        }
コード例 #4
0
        public async Task <IActionResult> PutRedemption([FromRoute] int id, [FromBody] Redemption redemption)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (id != redemption.Id)
            {
                return(BadRequest());
            }

            _context.Entry(redemption).State = EntityState.Modified;

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!RedemptionExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(NoContent());
        }
コード例 #5
0
        private void HandleAttachments(Redemption.SafeMailItemClass mailItem,
                                        AttachmentCollection attachments)
        {
            for (int i = 1; i <= mailItem.Attachments.Count; i++)
            {
                Redemption.Attachment attachmentToCopy = mailItem.Attachments.Item(i);

                object objAttach = attachmentToCopy.AsArray;
                byte[] bytes = objAttach as byte[];

                if (bytes != null)
                {
                    System.IO.MemoryStream memStream = new System.IO.MemoryStream(bytes);
                   
                    System.Net.Mail.Attachment attachment = new System.Net.Mail.Attachment(memStream, attachmentToCopy.FileName);

                    attachments.Add(attachment);

                    //event publishing to notify GUI we have processed another attachment.
                    if (AttachmentFound != null)
                    {
                        AttachmentFound(this, new AttachmentEventArgs(attachment));
                    }
                   
                }
            }
        }
コード例 #6
0
        public async Task <IActionResult> Create(CreateRedemptionViewModel redemptionViewModel)
        {
            var dataUtils = new DataUtils();

            if (ModelState.IsValid)
            {
                var redemption = new Redemption();

                redemption.RedemptionNumber = dataUtils.GenerateNumber();
                redemption.ModifiedDate     = redemption.CreatedDate = DateTime.UtcNow;
                redemption.PointsRequired   = redemptionViewModel.PointsRequired;
                redemption.Deleted          = false;

                if (redemptionViewModel != null)
                {
                    redemption.Name           = redemptionViewModel.Name;
                    redemption.PointsRequired = redemptionViewModel.PointsRequired;
                    redemption.Description    = redemptionViewModel.Description;
                }

                _context.Add(redemption);

                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }

            return(View(redemptionViewModel));
        }
コード例 #7
0
        public static void Run(Redemption redemption, JToken data)
        {
            var position = data["Position"].Value <int>();
            var user     = redemption.User.DisplayName;
            var text     = redemption.UserInput ?? "";

            PlayerMessage($"<{user}> {text}", position == 1);
        }
コード例 #8
0
        private static void StartRandomEvent(Redemption redemption, JToken data)
        {
            var eventName = data["EventName"].Value <string>();
            var distance  = data["Distance"].Value <int>();
            var duration  = data["Duration"].Value <int>();

            Vector3 b        = Random.insideUnitSphere * distance;
            var     position = Player.m_localPlayer.transform.position + Player.m_localPlayer.transform.forward * 2f + Vector3.up + b;

            RandomEventSystemStartPatch.StartEvent(redemption, eventName, position, duration);
        }
コード例 #9
0
        public async Task <IActionResult> Create([Bind("RedemptionId,Code,BookTitle,Isbn")] Redemption redemption)
        {
            if (ModelState.IsValid)
            {
                _context.Add(redemption);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            return(View(redemption));
        }
コード例 #10
0
        public async Task <IActionResult> PostRedemption([FromBody] Redemption redemption)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            _context.Redemption.Add(redemption);
            await _context.SaveChangesAsync();

            return(CreatedAtAction("GetRedemption", new { id = redemption.Id }, redemption));
        }
コード例 #11
0
        internal static void Run(Redemption redemption, JToken data)
        {
            var creature = data["Creature"].Value <int>();
            var level    = data["Level"].Value <int>();
            var count    = data["Count"].Value <int>();
            var offset   = data["Distance"].Value <int>();

            var name = SpawnCreatureSettings.creatures[creature];

            for (int i = 0; i < count; i++)
            {
                ConsoleUpdatePatch.AddAction(() => Prefab.Spawn(name, level, offset));
            }
        }
コード例 #12
0
        internal static void Run(Redemption redemption, JToken data)
        {
            var position = data["Position"].Value <int>();
            var user     = redemption.User.DisplayName;
            var text     = redemption.UserInput;

            var messageType = position == 0 ? MessageHud.MessageType.TopLeft : MessageHud.MessageType.Center;

            Log.Info($"Message -> user:{user} text:{text}");

            if (Player.m_localPlayer != null)
            {
                Player.m_localPlayer.Message(messageType, $"<{user}> {text}");
            }
        }
コード例 #13
0
        private static void HandleOriginator(Redemption.SafeMailItemClass redemptionItem,
                                        MailMessage outMailItem)
        {
            if (redemptionItem != null)
            {
                string smtpAddress = (string)redemptionItem.Sender.get_Fields(0x39FE001E);

                if (null == smtpAddress)
                {
                    throw new FormatException();
                }

                outMailItem.From = new MailAddress( smtpAddress,
                                                    redemptionItem.SenderName);
            }
        }
コード例 #14
0
        internal static void Run(Redemption redemption, JToken data)
        {
            var creature = data["Creature"].Value <int>();
            var level    = data["Level"].Value <int>();
            var count    = data["Count"].Value <int>();
            var offset   = data["Distance"].Value <int>();
            var tamed    = data["Tamed"]?.Value <bool>();

            var name = redemption.User.DisplayName;
            var type = SpawnCreatureSettings.creatures[creature];

            for (int i = 0; i < count; i++)
            {
                ConsoleUpdatePatch.AddAction(() => Prefab.Spawn(type, level, offset, tamed ?? false, name));
            }
        }
コード例 #15
0
        internal static void Run(Redemption redemption, JToken data)
        {
            var name = data["Name"].Value <string>();

            switch (name)
            {
            case "puke":
                ConsoleUpdatePatch.AddAction(Puke);
                break;

            case "heal":
                ConsoleUpdatePatch.AddAction(Heal);
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
        }
コード例 #16
0
        internal static void Run(Redemption redemption, JToken data)
        {
            var name     = data["Name"].Value <string>();
            var duration = data["Duration"].Value <int>();

            if (name == "Reset to default")
            {
                name = "";
            }

            if (EnvMan.instance == null)
            {
                return;
            }

            //Log.Info($"Env -> {name} {duration}");

            EnvMan.instance.m_debugEnv = name;

            try
            {
                if (Player.m_localPlayer != null)
                {
                    var type = MessageHud.MessageType.Center;
                    var user = redemption.User.DisplayName;
                    var text = redemption.UserInput?.Truncate(79) ?? "";
                    var msg1 = $"{user} says \"There is no bad weather, {name} incoming.\"";
                    var msg2 = $"It's time to catch a rest, {user} calls the weather spirits to calm them down.";
                    var msg  = name.Length > 0 ? msg1 : msg2;

                    Player.m_localPlayer.Message(type, $"{msg}\n{text}");
                }

                if (duration > 0)
                {
                    Task.Delay(duration * 60000).ContinueWith(t => EnvMan.instance.m_debugEnv = "");
                }
            }
            catch (Exception ex)
            {
                Log.Warning(ex.StackTrace);
            }
        }
コード例 #17
0
        public static void StartEvent(Redemption redemption, string name, Vector3 position, int duration)
        {
            var randomEvent = GetEventByName(name);

            if (randomEvent == null)
            {
                return;
            }

            var user = redemption.User.DisplayName;
            var text = redemption.UserInput?.Truncate(79) ?? "";

            randomEvent.m_enabled               = true;
            randomEvent.m_nearBaseOnly          = false;
            randomEvent.m_duration              = duration * 60f;
            randomEvent.m_pauseIfNoPlayerInArea = false;

            randomEvent.m_startMessage = $"{user.ToUpper()} is raiding you with a horde of {name.ToUpper()}!\nRun for your life!\n{text}";
            randomEvent.m_endMessage   = $"You survived the raid of {user.ToUpper()}!\nSame player play again!";

            PublicSetRandomEvent(RandEventSystem.instance, randomEvent, position);
        }
コード例 #18
0
        public async Task <ActionResult> UpdateVoucher(string code, [FromBody] VoucherModel update)
        {
            //Passing in values using "VoucherModel" into the Different Model to use params
            Voucher     voucher     = new Voucher(update.Code, update.Voucher_Type, update.Category, update.AdditionalInfo, update.StartDate, update.ExpirationDate, update.Active);
            Discount    discount    = new Discount(update.Discount_Type, update.Percent_Off, update.Amount_Off, update.AmountLimit, update.Unit_Off, update.UnitType);
            Gift        gift        = new Gift(update.Amount);
            Redemption  redemption  = new Redemption(update.Quantity);
            Code_Config code_Config = new Code_Config(update.Prefix, update.Suffix, update.CodeLength, update.CharSet);
            MetaData    metadata    = new MetaData(update.Test, update.Locale);

            //Run CreateVoucherAsync Service and returns response with ServiceResponse class
            ServiceResponse response = await CreateVoucherRequest.CreateVoucherAsync(voucher, discount, gift, redemption, code_Config, metadata);

            //Checks if response status code is 200, if true returns voucher params and values as Json data, else returns response(Not successful)
            switch (Response.StatusCode == 200)
            {
            case true:
                return(Ok(update));

            default:
                return(Ok(response));
            }
        }
コード例 #19
0
        public IActionResult PostRedemption([FromBody] AccountStatementViewModel model)
        {
            var _user = new AuthenticateResponse
            {
                MembershipKey = 1006979,                   //1007435,
                EmailAddress  = "*****@*****.**", //"*****@*****.**",
                FirstName     = "Tolulope",
                LastName      = "Olusakin",
                FullName      = "Olusakin Tolulope S" //"Funmilayo Ruth Adeyemi",
                                                      //MembershipKey = 1007435,
                                                      //EmailAddress = "*****@*****.**",
                                                      //FirstName = "Funmilayo",
                                                      //LastName = "Adeyemi",
                                                      //FullName = "Funmilayo Ruth Adeyemi",
            };
            var _sessionID = "fb2e77d.47a0479900504cb3ab4a1f626d174d2d";

            try
            {
                var redeemedProducts = "RedeemedProducts::";
                var json             = JsonConvert.SerializeObject(model.Product);
                var list             = JsonConvert.DeserializeObject <List <RedemptionProduct> >(json);
                foreach (var item in list)
                {
                    redeemedProducts += "ProductCode:" + item.ProductCode + ";";
                    redeemedProducts += "Amount:" + item.Amount + ";";
                }
                ;

                Redemption redemption = new Redemption
                {
                    CustomerReference = _user.MembershipKey.ToString(),
                    RedeemedProducts  = redeemedProducts,
                    Amount            = model.TotalAmount,
                    Reason            = model.Reason,
                    ReasonOther       = model.ReasonOthers
                };

                db.Redemptions.Add(redemption);
                db.SaveChanges();

                var accountsRequest = new SummaryRequest
                {
                    MembershipNumber = _user.MembershipKey
                };
                var accountsResponse = _clientService.GetAccountSummary(accountsRequest);

                VerifyOtpRequest OtpRequest = new VerifyOtpRequest {
                    OtpCode = model.Otp, SessionId = _sessionID.ToString()
                };

                var reRequest = new RedemptionRequest
                {
                    MembershipNumber = _user.MembershipKey.ToString(),
                    Products         = model.Product,
                    TotalAmount      = model.TotalAmount,
                    VerifyOtp        = OtpRequest,
                    Source           = "Client Portal"
                };
                var reResponse = _clientService.Redemption(reRequest);

                if (reResponse != null)
                {
                    return(Json(reResponse));
                }
                else
                {
                    return(StatusCode((int)HttpStatusCode.ExpectationFailed, "No response from the server."));
                }
            }
            catch (Exception ex)
            {
                TempData["message"] = ViewBag.Message = ex.Message;
                Utilities.ProcessError(ex, _contentRootPath);
                _logger.LogError(null, ex, ex.Message);
            }
            return(View());
        }
コード例 #20
0
ファイル: Attachment.cs プロジェクト: killbug2004/WSProf
 internal Attachment(Redemption.Attachment attachment)
 {
     m_attachment = attachment;
 }
コード例 #21
0
ファイル: Activator.cs プロジェクト: djole353/port2
        private void Survival()
        {
            if (Redemption.IsReady() && Config.Item("Redemption").GetValue <bool>())
            {
                var target = HeroManager.Enemies.FirstOrDefault(x => x.IsValidTarget(5000) && x.Position.CountAlliesInRange(600) > 0);
                if (target != null)
                {
                    var ally = HeroManager.Allies.FirstOrDefault(x => x.IsValid && !x.IsDead && x.Position.Distance(target.Position) < 400);
                    if (ally != null && ally.Health - OktwCommon.GetIncomingDamage(ally) < ally.MaxHealth * 0.5)
                    {
                        if (target.CountAlliesInRange(600) > 1 || ally.CountEnemiesInRange(600) > 1)
                        {
                            var predInput = new SebbyLib.Prediction.PredictionInput
                            {
                                Aoe       = true,
                                Collision = false,
                                Speed     = float.MaxValue,
                                Delay     = 0.5f,
                                Range     = 5500,
                                From      = Player.ServerPosition,
                                Radius    = 500,
                                Unit      = target,
                                Type      = SebbyLib.Prediction.SkillshotType.SkillshotCircle
                            };
                            var pos = SebbyLib.Prediction.Prediction.GetPrediction(predInput);
                            Redemption.Cast(pos.CastPosition);
                        }
                    }
                }
            }


            if (Player.HealthPercent < 60 && (Seraph.IsReady() || Zhonya.IsReady() || CanUse(barrier)))
            {
                double dmg    = OktwCommon.GetIncomingDamage(Player);
                var    enemys = Player.CountEnemiesInRange(800);
                if (dmg > 0 || enemys > 0)
                {
                    if (CanUse(barrier) && Config.Item("Barrier").GetValue <bool>())
                    {
                        var value = 95 + Player.Level * 20;
                        if (dmg > value && Player.HealthPercent < 50)
                        {
                            ObjectManager.Player.Spellbook.CastSpell(barrier, Player);
                        }
                        else if (Player.Health - dmg < enemys * Player.Level * 20)
                        {
                            ObjectManager.Player.Spellbook.CastSpell(barrier, Player);
                        }
                        else if (Player.Health - dmg < Player.Level * 10)
                        {
                            ObjectManager.Player.Spellbook.CastSpell(barrier, Player);
                        }
                    }

                    if (Seraph.IsReady() && Config.Item("Seraph").GetValue <bool>())
                    {
                        var value = Player.Mana * 0.2 + 150;
                        if (dmg > value && Player.HealthPercent < 50)
                        {
                            Seraph.Cast();
                        }
                        else if (Player.Health - dmg < enemys * Player.Level * 20)
                        {
                            Seraph.Cast();
                        }
                        else if (Player.Health - dmg < Player.Level * 10)
                        {
                            Seraph.Cast();
                        }
                    }

                    if (Zhonya.IsReady() && Config.Item("Zhonya").GetValue <bool>())
                    {
                        if (dmg > Player.Level * 35)
                        {
                            ZhonyaTryCast();
                        }
                        else if (Player.Health - dmg < enemys * Player.Level * 20)
                        {
                            ZhonyaTryCast();
                        }
                        else if (Player.Health - dmg < Player.Level * 10)
                        {
                            ZhonyaTryCast();
                        }
                    }
                }
            }


            if (!Solari.IsReady() && !FaceOfTheMountain.IsReady() && !CanUse(heal))
            {
                return;
            }

            foreach (var ally in HeroManager.Allies.Where(ally => ally.IsValid && !ally.IsDead && ally.HealthPercent < 50 && Player.Distance(ally.ServerPosition) < 700))
            {
                double dmg = OktwCommon.GetIncomingDamage(ally);

                if (dmg == 0)
                {
                    continue;
                }

                if (CanUse(heal) && Config.Item("Heal").GetValue <bool>())
                {
                    if (!Config.Item("AllyHeal").GetValue <bool>() && !ally.IsMe)
                    {
                        return;
                    }

                    if (ally.Health - dmg < ally.Level * 10)
                    {
                        ObjectManager.Player.Spellbook.CastSpell(heal, ally);
                    }
                    else if (ally.Health - dmg < ally.Level * 10)
                    {
                        ObjectManager.Player.Spellbook.CastSpell(heal, ally);
                    }
                }

                if (Config.Item("Solari").GetValue <bool>() && Solari.IsReady() && Player.Distance(ally.ServerPosition) < Solari.Range)
                {
                    var value = 75 + (15 * Player.Level);
                    if (dmg > value && Player.HealthPercent < 50)
                    {
                        Solari.Cast();
                    }
                    else if (ally.Health - dmg < ally.Level * 10)
                    {
                        Solari.Cast();
                    }
                    else if (ally.Health - dmg < ally.Level * 10)
                    {
                        Solari.Cast();
                    }
                }

                if (Config.Item("FaceOfTheMountain").GetValue <bool>() && FaceOfTheMountain.IsReady() && Player.Distance(ally.ServerPosition) < FaceOfTheMountain.Range)
                {
                    var value = 0.1 * Player.MaxHealth;
                    if (dmg > value && Player.HealthPercent < 50)
                    {
                        FaceOfTheMountain.Cast(ally);
                    }
                    else if (ally.Health - dmg < ally.Level * 10)
                    {
                        FaceOfTheMountain.Cast(ally);
                    }
                    else if (ally.Health - dmg < ally.Level * 10)
                    {
                        FaceOfTheMountain.Cast(ally);
                    }
                }
            }
        }
コード例 #22
0
        internal static void Run(Redemption redemption, JToken data)
        {
            var munin = data["Type"].Value <bool>();

            RavenPatch.Message(redemption.User.DisplayName, redemption.UserInput ?? "Caw! Caw!", munin);
        }
コード例 #23
0
 internal static void Run(Redemption redemption, JToken data)
 {
     ConsoleUpdatePatch.AddAction(() => StartRandomEvent(redemption, data));
 }
コード例 #24
0
        public static async Task <ServiceResponse> CreateVoucherAsync(Voucher voucher, Discount discount, Gift gift, Redemption redemption, Code_Config code_Config, MetaData metaData)
        {
            try
            {
                int rowAffected = 0;
                using (var conn = Connection)
                {
                    if (conn.State == ConnectionState.Closed)
                    {
                        conn.Open();
                    }

                    //Parameters Declaration to be passed into Stored procdure "InsertVoucher"..
                    DynamicParameters parameters = new DynamicParameters();
                    parameters.Add("@Code", voucher.Code);
                    parameters.Add("@VoucherType", voucher.Voucher_type);
                    parameters.Add("@DiscountType", discount.Discount_type);
                    parameters.Add("@DiscountPercentOff", discount.Percent_Off);
                    parameters.Add("@DiscountAmountOff", discount.Amount_Off);
                    parameters.Add("@DiscountAmountLimit", discount.AmountLimit);
                    parameters.Add("@DiscountUnitOff", discount.Unit_Off);
                    parameters.Add("@DiscountUnitType", discount.Unit_Type);
                    parameters.Add("@GiftAmount", gift.Amount);
                    parameters.Add("@VoucherCategory", voucher.Category);
                    parameters.Add("@VoucherAdditionalInfo", voucher.Additional_Info);
                    parameters.Add("@VoucherStartDate", voucher.Start_Date);
                    parameters.Add("@VoucherExpirationDate", voucher.Expiration_Date);
                    parameters.Add("@VoucherActiveStatus", voucher.Active);
                    parameters.Add("@RedemptionQuantity", redemption.Quantity);
                    parameters.Add("@CodePrefix", code_Config.prefix);
                    parameters.Add("@CodeSuffix", code_Config.suffix);
                    parameters.Add("@CodeLength", code_Config.length);
                    parameters.Add("@CodeCharset", code_Config.charset);
                    parameters.Add("@VoucherMetaData", metaData.Meta_Data);

                    rowAffected = await conn.ExecuteAsync("InsertVoucher", parameters, commandType : CommandType.StoredProcedure);
                }

                //response using predefined serviceresponse class
                ServiceResponse response = new ServiceResponse("0", "Good Request", "Request Completed");
                return(response);
            }
            catch (Exception e)
            {
                //error response
                ServiceResponse response = new ServiceResponse("100", "Unsuccessful", "Request could not be completed");
                return(response);
            }
        }
コード例 #25
0
 internal static global::System.Runtime.InteropServices.HandleRef getCPtr(Redemption obj)
 {
     return((obj == null) ? new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero) : obj.swigCPtr);
 }
コード例 #26
0
ファイル: Redemption.cs プロジェクト: minikie/test
 internal static global::System.Runtime.InteropServices.HandleRef getCPtr(Redemption obj) {
   return (obj == null) ? new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero) : obj.swigCPtr;
 }
コード例 #27
0
        private static void HandleRecipients(Redemption.SafeMailItemClass redemptionItem,
                                        MailMessage outMailItem)
        {
            for (int i = 1; i <= redemptionItem.Recipients.Count; i++)
            {
                SafeRecipient recip = redemptionItem.Recipients.Item(i);

                MailAddress address = BuildMailAddress(recip);
                switch (recip.Type)
                {
                    case 1:
                        outMailItem.To.Add(address);
                        break;
                    case 2:
                        outMailItem.CC.Add(address);
                        break;
                    case 3:
                        outMailItem.Bcc.Add(address);
                        break;
                    default:
                        break;
                }
            }
        }
コード例 #28
0
ファイル: Bond.cs プロジェクト: stepinto163/Qdp
        private Cashflow[] GetBondCashflows(IMarketCondition market, bool netted = true, bool calcAi = false)
        {
            var accruals             = Accruals.ToArray();
            var schedulePaymentDates = calcAi ? Accruals.Skip(1).ToArray() : PaymentSchedule.ToArray();

            if (schedulePaymentDates.Length == 0)
            {
                throw  new PricingLibraryException("Number of payments is 0");
            }

            List <CfCalculationDetail[]> cfCalcDetails;

            var cashflows  = new List <Cashflow>();
            var prevCfDate = accruals[0];

            var coupons = Coupon.GetCoupon(
                Accruals,
                market.FixingCurve.HasValue ? market.FixingCurve.Value : null,
                market.HistoricalIndexRates.HasValue ? market.HistoricalIndexRates.Value : null,
                out cfCalcDetails,
                IssueRate,
                _compensationRate);
            var refStartDates = new List <Date>();
            var refEndDates   = new List <Date>();

            for (var i = 0; i < coupons.Length; ++i)
            {
                var refStartDate = accruals[i];
                var refEndDate   = accruals[i + 1];
                if (i == 0 && !_isRegualDate[i])
                {
                    if (PaymentFreq != Frequency.None)
                    {
                        if (Stub == Stub.LongStart || Stub == Stub.ShortStart)
                        {
                            refStartDate = PaymentFreq.GetTerm().Prev(refEndDate);
                        }
                        else
                        {
                            refEndDate = PaymentFreq.GetTerm().Next(refStartDate);
                        }
                    }
                }
                refStartDates.Add(refStartDate);
                refEndDates.Add(refEndDate);
            }

            IAmortization amortization;

            if (AmortizationType == AmortizationType.EqualPrincipal || AmortizationType == AmortizationType.EqualPrincipalAndInterest)
            {
                //for these two types, amortization is calculated in cash flow calculation
                var      tArr = coupons.Select((x, i) => AccrualDayCount.CalcDayCountFraction(accruals[i], accruals[i + 1], refStartDates[i], refEndDates[i])).ToArray();
                double[] begPrincipal;
                double[] interest;
                double[] principalPay;
                double[] prepayment;
                double[] defaultPrincipal;
                _mortgageCalculator.GetPaymentDetails(tArr, Notional, coupons, PaymentFreq, AmortizationType, out begPrincipal, out interest, out principalPay, out prepayment, out defaultPrincipal, 0);
                amortization = new Amortization(ToAmortizationSchedule(schedulePaymentDates, principalPay.Select((x, i) => Tuple.Create(i + 1, x)).ToDictionary(x => x.Item1, x => x.Item2)), false);
            }
            else
            {
                amortization = Amoritzation.Adjust(new Schedule(schedulePaymentDates), Calendar, calcAi ? AccrualBizDayRule : PaymentBizDayRule, PaymentFreq);
                amortization = amortization.ResetAmortization(market.ValuationDate);
            }

            for (var i = 0; i < coupons.Length; ++i)
            {
                var amortizationRedemption = 0.0;
                var remainPrincipal        = 100.0;
                var couponPay = 0.0;
                var prevDate  = prevCfDate;
                if (amortization.AmortizationSchedule != null && amortization.AmortizationSchedule.Any(x => x.Key > prevCfDate && x.Key < schedulePaymentDates[i]))
                {
                    var intermediatePrePayDate = amortization.AmortizationSchedule.Where(x => x.Key > prevCfDate && x.Key < schedulePaymentDates[i]).Select(x => x.Key).OrderBy(x => x).ToArray();
                    CfCalculationDetail[] tmpCfCalculationDetails;
                    foreach (var date in intermediatePrePayDate)
                    {
                        amortizationRedemption = amortization.GetRemainingPrincipal(prevDate);
                        remainPrincipal        = Notional * amortizationRedemption;
                        var periodCoupon = Coupon.GetCoupon(prevDate, date, market.FixingCurve.Value, market.HistoricalIndexRates, out tmpCfCalculationDetails, _compensationRate[i]);
                        couponPay = remainPrincipal * periodCoupon * AccrualDayCount.CalcDayCountFraction(prevDate, date, refStartDates[i], refEndDates[i]);
                        cashflows.Add(new Cashflow(prevDate, date, date, couponPay, Currency, CashflowType.Coupon, tmpCfCalculationDetails.Aggregate(true, (current, v) => current & v.IsFixed), market.GetDf(date), cfCalcDetails[i], refStartDates[i], refEndDates[i], remainPrincipal, periodCoupon));
                        prevDate = date;
                    }
                    coupons[i]       = Coupon.GetCoupon(prevDate, accruals[i + 1], market.FixingCurve.Value, market.HistoricalIndexRates, out tmpCfCalculationDetails, _compensationRate[i]);
                    cfCalcDetails[i] = tmpCfCalculationDetails;
                }

                amortizationRedemption = amortization.GetRemainingPrincipal(prevDate);
                remainPrincipal        = Notional * amortizationRedemption;
                couponPay = remainPrincipal * coupons[i] * AccrualDayCount.CalcDayCountFraction(prevDate, accruals[i + 1], refStartDates[i], refEndDates[i]);

                if (i == coupons.Length - 1)
                {
                    amortizationRedemption = amortization.GetRemainingPrincipal(prevCfDate);
                    remainPrincipal        = Notional * amortizationRedemption;

                    //final settlement might be adjusted, coupon [MaturityDate, settlementDate) is added
                    if (SettlmentGap != null)
                    {
                        var settlementDate = SettlmentGap.Get(Calendar, UnderlyingMaturityDate);
                        if (settlementDate > accruals[i + 1])
                        {
                            var tmpCoupon        = double.IsNaN(_settlementCoupon) ? coupons[i] : _settlementCoupon;
                            var additionalCoupon = remainPrincipal * tmpCoupon * AccrualDayCount.CalcDayCountFraction(UnderlyingMaturityDate, settlementDate, refStartDates[i], refEndDates[i]);
                            couponPay += additionalCoupon;
                        }
                    }

                    couponPay = Redemption.GetRedemptionPayment(couponPay, remainPrincipal) - remainPrincipal;
                }

                cashflows.Add(new Cashflow(prevDate, accruals[i + 1], schedulePaymentDates[i], couponPay, Currency, CashflowType.Coupon, cfCalcDetails[i] == null ? true : cfCalcDetails[i].Aggregate(true, (current, v) => current & v.IsFixed), market.GetDf(schedulePaymentDates[i]), cfCalcDetails[i], refStartDates[i], refEndDates[i], remainPrincipal, coupons[i]));
                prevCfDate = accruals[i + 1];
            }

            cashflows.AddRange(amortization.AmortizationSchedule.Keys.Select(key => new Cashflow(key, key, key, amortization.AmortizationSchedule[key] * Notional, Currency, CashflowType.Principal, true, market.GetDf(key), null)));

            if (netted)
            {
                return(cashflows
                       .GroupBy(cf => cf.PaymentDate)
                       .Select(item => new Cashflow(item.Min(x => x.AccrualStartDate), item.Max(x => x.AccrualEndDate), item.Key, item.Sum(entry => entry.PaymentAmount), Currency, CashflowType.Coupon, item.Aggregate(true, (current, v) => current && v.IsFixed), market.GetDf(item.Key), item.Min(x => x.CalculationDetails), item.Min(x => x.RefStartDate), item.Max(x => x.RefEndDate), item.Max(entry => entry.StartPrincipal), item.Sum(entry => entry.CouponRate)))
                       .OrderBy(cf => cf.PaymentDate)
                       .ToArray());
            }
            else
            {
                return(cashflows.ToArray());
            }
        }
コード例 #29
0
ファイル: Utils.cs プロジェクト: ProjectECS/ECS
 internal static void GetAttachProps(Redemption.Attachment attach, out string contentId,
     out bool hidden)
 {
     const string SOURCE = CLASS_NAME + "GetAttachProps";
     contentId = null;
     hidden = false;
     try
     {
         object prop;
         try
         {
             prop = attach.Fields[ThisAddIn.PR_ATTACHMENT_HIDDEN];
         }
         catch
         {
             prop = null;
         }
         if (prop != null)
         {
             hidden = Convert.ToBoolean(prop);
         }
         //only check hidden attachments for contentId
         if (hidden)
         {
             try
             {
                 prop = attach.Fields[ThisAddIn.PR_ATTACH_CONTENT_ID];
             }
             catch
             {
                 prop = null;
             }
             if (prop != null)
             {
                 contentId = Convert.ToString(prop);
             }
         }
     }
     catch (Exception ex)
     {
         Logger.Error(SOURCE, ex.ToString());
     }
 }
コード例 #30
0
ファイル: Recipient.cs プロジェクト: killbug2004/WSProf
 internal Recipient(Redemption.SafeRecipient recipient)
 {
     m_recipient = recipient;
 }
コード例 #31
0
ファイル: MessageItem.cs プロジェクト: killbug2004/WSProf
 internal MessageItem(Redemption.MessageItem msg)
 {
     m_msg = msg;
 }
コード例 #32
0
        public async static Task <ServiceResponse> UpdateVoucherAsync(Voucher voucher, Discount discount, Gift gift, Redemption redemption, Code_Config codeconfig, MetaData metaData)
        {
            ServiceResponse sresponse = null;

            try
            {
                using (var conn = Connection)
                {
                    if (conn.State == System.Data.ConnectionState.Closed)
                    {
                        conn.Open();
                    }

                    //Parameters Declaration to be passed into Stored procdure "InsertVoucher"..
                    DynamicParameters parameters = new DynamicParameters();
                    parameters.Add("@Code", voucher.Code);
                    parameters.Add("@VoucherType", voucher.Voucher_type);
                    parameters.Add("@DiscountType", discount.Discount_type);
                    parameters.Add("@DiscountPercentOff", discount.Percent_Off);
                    parameters.Add("@DiscountAmountOff", discount.Amount_Off);
                    parameters.Add("@DiscountAmountLimit", discount.AmountLimit);
                    parameters.Add("@DiscountUnitOff", discount.Unit_Off);
                    parameters.Add("@DiscountUnitType", discount.Unit_Type);
                    parameters.Add("@GiftAmount", gift.Amount);
                    parameters.Add("@VoucherCategory", voucher.Category);
                    parameters.Add("@VoucherAdditionalInfo", voucher.Additional_Info);
                    parameters.Add("@VoucherStartDate", voucher.Start_Date);
                    parameters.Add("@VoucherExpirationDate", voucher.Expiration_Date);
                    parameters.Add("@VoucherActiveStatus", voucher.Active);
                    parameters.Add("@RedemptionQuantity", redemption.Quantity);
                    parameters.Add("@CodePrefix", codeconfig.prefix);
                    parameters.Add("@CodeSuffix", codeconfig.suffix);
                    parameters.Add("@CodeLength", codeconfig.length);
                    parameters.Add("@CodeCharset", codeconfig.charset);
                    parameters.Add("@VoucherMetaData", metaData.Meta_Data);

                    await conn.ExecuteAsync("UpdateVoucher", parameters, commandType : System.Data.CommandType.StoredProcedure);

                    sresponse = new ServiceResponse("200", "Successful", "Voucher has been Updated");
                }
                return(sresponse);
            }
            catch (AggregateException ae)
            {
                return(sresponse = new ServiceResponse("400", "Unsuccessful", ae.Message));
            }
        }
コード例 #33
0
ファイル: Recipients.cs プロジェクト: killbug2004/WSProf
 internal Recipients(Redemption.SafeRecipients recipients)
 {
     m_recipients = recipients;
 }
コード例 #34
0
ファイル: AddressEntries.cs プロジェクト: killbug2004/WSProf
 internal AddressEntries(Redemption.AddressEntries addressentries)
 {
     m_addressentries = addressentries;
 }
コード例 #35
0
ファイル: Attachments.cs プロジェクト: killbug2004/WSProf
 internal Attachments(Redemption.Attachments attachments)
 {
     m_attachments = attachments;
 }