示例#1
0
        private async Task <AgreementResponse> SaveSpotAndForwardAgreement(PriceHedgeFormModel formModel, Customer customer)
        {
            var spotAgreement = new SpotAndForwardAgreement
            {
                PriceArea      = formModel.PriceArea,
                HarvestYear    = formModel.HarvestYear,
                ValidTo        = formModel.ValidTo,
                ValidFrom      = formModel.ValidFrom,
                ModeOfDelivery = formModel.DeliveryMode,
                Quantity       = formModel.CommitQuantity,
                ProductItemId  = formModel.ProductItemId,
                //AgreementType = formModel.AgreementTypeCode,
                PriceType         = formModel.PriceType,
                GrainType         = formModel.GrainType,
                WatchDate         = formModel.PriceWatchEndDate,
                Price             = formModel.UpperPrice, //From Orri - Price as WatchPriceMaximum
                WatchPriceMinimum = formModel.LowerPrice,
                WatchAction       = formModel.TargetAction,

                CustomerId = customer.CustomerId,
                //CustomerName = customer.CustomerName
            };

            return(await _agreementRepository.SaveSpotAndForwardAgreementAsync(spotAgreement));
        }
示例#2
0
        public async Task <ActionResult> Index(PriceHedgePage currentPage,
                                               string pArea, string period, string priskey,
                                               string grain,
                                               string pItemId, string pItem,
                                               string agreement, string pid, string agreementId = "")
        {
            var supplier = UserManager.GetActiveCustomer(HttpContext);

            if (SiteUser == null || supplier == null)
            {
                ViewData["NotLoggedIn"] = true;
                return(View("~/Views/AppPages/PriceHedgePage/PriceHedge.cshtml", new PriceHedgeViewModel(currentPage)));
            }

            if (string.IsNullOrEmpty(pArea) || string.IsNullOrEmpty(period) || string.IsNullOrEmpty(priskey) || string.IsNullOrEmpty(pid))
            {
                ViewData["IncorrectParams"] = true;
                return(View("~/Views/AppPages/PriceHedgePage/PriceHedge.cshtml", new PriceHedgeViewModel(currentPage)));
            }
            agreement = string.IsNullOrWhiteSpace(agreement) ? AgreementType.SportAndForwardAvtal : agreement;
            var purchaseDateObject = GenerateFromDatePeriod(period);
            int agrId;

            int.TryParse(agreementId, out agrId);
            var model = new PriceHedgeViewModel(currentPage)
            {
                PriceLow             = SettingPage.PurchasePriceLow,
                CommitQuantityMin    = 12, //Need to get from service instead of
                TimeWithClock        = $"{DateTime.Now:dd MMM yyyy} klockan {DateTime.Now:HH:mm}",
                SelectedPriceArea    = (await _agreementRepository.GetSelectedPriceArea(supplier.CustomerNo)),
                AgreementTypeName    = GetAgreementTypeName(priskey, agreement),
                AgreementHeading     = GetAgreementHeading(agreement),
                ProductItemName      = pItem,
                DeliveryPeriod       = $"{purchaseDateObject.ValidFrom:yyyy-MM-dd} - {purchaseDateObject.ValidTo:yyyy-MM-dd}",
                RegisterDate         = $"{DateTime.Now:yyyy-MM-dd}",
                Customer             = (await _agreementRepository.GetCustomerAsync(supplier.CustomerNo)) ?? new Customer(),
                PurchaseAgreementUrl = string.IsNullOrEmpty(pid) ? "#" : GetPurchaseAgreementPageUrl(pid),
                PriceHedgeForm       = new PriceHedgeFormModel
                {
                    PriceArea         = int.Parse(pArea),
                    ProductItemId     = pItemId,
                    GrainType         = grain,
                    PriceType         = priskey,
                    PriceWatchEndDate = DateTime.Now,
                    HarvestYear       = purchaseDateObject.HarvestYear,
                    ValidTo           = purchaseDateObject.ValidTo,
                    ValidFrom         = purchaseDateObject.ValidFrom,
                    AgreementType     = string.IsNullOrEmpty(agreement) ? AgreementType.SportAndForwardAvtal : agreement,
                    AgreementId       = agrId
                },
                User = SiteUser,
            };

            return(View("~/Views/AppPages/PriceHedgePage/PriceHedge.cshtml", model));
        }
示例#3
0
        private async Task <AgreementResponse> SavePriceProtectedStorageAgreement(PriceHedgeFormModel formModel, Customer customer)
        {
            var storageAgreement = new PriceProtectStorageAgreement()
            {
                CustomerUserName  = customer.CustomerName,
                WatchDate         = formModel.PriceWatchEndDate,
                WatchPrice        = formModel.UpperPrice,
                WatchPriceMinimum = formModel.LowerPrice,
                WatchAction       = formModel.TargetAction,
                AgreementId       = formModel.AgreementId.ToString()
            };

            //TODO: waiting Olle to update the service, saving method should return AgreementResponse obj ==>done!
            return(await _agreementRepository.SavePriceProtectedStorageAgreementAsync(storageAgreement));
        }
示例#4
0
        public async Task <ActionResult> Index(PriceHedgePage currentPage, PriceHedgeFormModel formModel, string purchaseAgreementUrl)
        {
            var supplier = UserManager.GetActiveCustomer(HttpContext);

            if (SiteUser == null || supplier == null)
            {
                return(HttpNotFound());
            }

            var customer = await _agreementRepository.GetCustomerAsync(supplier.CustomerNo);

            var model = new PriceHedgeViewModel(currentPage)
            {
                Customer             = customer,
                PurchaseAgreementUrl = purchaseAgreementUrl,
                PriceHedgeForm       = formModel,
                ConfiramtionText     = GetConfirmationText(currentPage, formModel.AgreementType)
            };

            AgreementResponse result = null;

            if (formModel.AgreementType.Equals(AgreementType.SportAndForwardAvtal))
            {
                result = await SaveSpotAndForwardAgreement(formModel, customer);
            }
            else if (formModel.AgreementType.Equals(AgreementType.Depaavtal))
            {
                result = await SaveStorageAgreementAgreement(formModel, customer);
            }
            else if (formModel.AgreementType.Equals(AgreementType.Poolavtal))
            {
                result = await SavePoolAgreement(formModel, customer);
            }
            else if (formModel.AgreementType.Equals(AgreementType.PrissakringDepaavtal))
            {
                result = await SavePriceProtectedStorageAgreement(formModel, customer);
            }

            if (result?.Id != null)
            {
                return(View("~/Views/AppPages/PriceHedgePage/PriceWatchStep3.cshtml", model));
            }

            TempData["Error"] = true;
            return(View("~/Views/AppPages/PriceHedgePage/PriceWatchStep3.cshtml", model));
        }
示例#5
0
        private async Task <AgreementResponse> SaveStorageAgreementAgreement(PriceHedgeFormModel formModel, Customer customer)
        {
            var storageAgreement = new StorageAgreement()
            {
                //AgreementId =
                CustomerId     = customer.CustomerId,
                GrainType      = formModel.GrainType,
                HarvestYear    = formModel.HarvestYear,
                ModeOfDelivery = formModel.DeliveryMode,
                PriceArea      = formModel.PriceArea,
                ProductItemId  = formModel.ProductItemId,
                Quantity       = formModel.CommitQuantity,
                ValidFrom      = formModel.ValidFrom,
                ValidTo        = formModel.ValidTo,
            };

            return(await _agreementRepository.SaveStorageAgreementAsync(storageAgreement));
        }
示例#6
0
        private async Task <AgreementResponse> SavePoolAgreement(PriceHedgeFormModel formModel, Customer customer)
        {
            var spotAgreement = new PoolAgreement()
            {
                PriceArea      = formModel.PriceArea,
                PriceType      = formModel.PriceType,
                HarvestYear    = formModel.HarvestYear,
                ValidTo        = formModel.ValidTo,
                ValidFrom      = formModel.ValidFrom,
                ModeOfDelivery = formModel.DeliveryMode,
                Quantity       = formModel.CommitQuantity,
                ProductItemId  = formModel.ProductItemId,
                GrainType      = formModel.GrainType,
                CustomerId     = customer.CustomerId,
                //CustomerName = customer.CustomerName
            };

            return(await _agreementRepository.SavePoolAgreement(spotAgreement));
        }