public ActionResult Negotiation(String negotiationId)
        {
            if (negotiationId == null)
            {
                return(RedirectToAction("Index"));
            }

            NegotiationEngine engine;

            if (negotiationId == null || !NegotiationManager.OnGoingNegotiations.TryGetValue(negotiationId, out engine))
            {
                return(new HttpStatusCodeResult(System.Net.HttpStatusCode.BadRequest));
            }

            if (!engine.NegotiationActive)
            {
                return(View("NegotiationEndView",
                            engine.GetEndModel()));
            }

            NegotiationViewModel model = new NegotiationViewModel
            {
                Id                = negotiationId,
                AiSide            = engine.AiConfig.Side,
                HumanConfig       = engine.HumanConfig,
                RemainingTime     = engine.Status.RemainingTime,
                Domain            = engine.Domain,
                Actions           = engine.Actions,
                OpponentOffer     = engine.Status.AiStatus.Offer,
                Offer             = engine.Status.HumanStatus.Offer,
                LastAcceptedOffer = engine.Status.LastAcceptedOffer
            };

            return(View(model));
        }
        public ActionResult SubmitTutorialAnswers(NegotiationTutorialModel model)
        {
            if (model == null || model.TutorialId == null)
            {
                return(RedirectToAction("Negotiation"));
            }

            if (!model.Questions.Select(x => x.Answer).SequenceEqual(NegotiationManager.TutorialModels[model.TutorialId].Questions.Select(x => x.ActualAnswer)))
            {
                ModelState.AddModelError("Wrong answer", "One or more answers was wrong.");
                return(View("NegotiationTutorial", NegotiationManager.TutorialModels[model.TutorialId]));
            }

            NegotiationTutorialModel temp;

            NegotiationManager.TutorialModels.TryRemove(model.TutorialId, out temp);

            NegotiationEngine engine = NegotiationManager.OnGoingNegotiations[model.TutorialId];

            NegotiationViewModel newModel = new NegotiationViewModel
            {
                Id            = model.TutorialId,
                AiSide        = engine.AiConfig.Side,
                HumanConfig   = engine.HumanConfig,
                RemainingTime = TimeSpan.FromSeconds(engine.Domain.NumberOfRounds * engine.Domain.RoundLength.TotalSeconds),
                Domain        = engine.Domain,
                Actions       = new List <NegotiationActionModel>()
            };

            engine.BeginNegotiation();

            return(RedirectToAction("Negotiation", new { negotiationId = model.TutorialId }));
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="MessageHeader"/> class.
        /// </summary>
        public AddMessageView(NegotiationViewModel viewModel)
        {
            InitializeComponent();

            this.DataContext = viewModel;

            eNegMessanger.FlippMessage.Register(this, OnFlippingByPageName);
            eNegMessanger.NewPopUp.Register(this, OnAddNewPopUp);

            eNegMessanger.FlippMessage.Register(this, OnFlipping);
            eNegMessanger.SendCustomMessage.Register(this, OnUpdateMessage);
        }
        public static NegotiationViewModel ConvertToVm(TblNegotiation model)
        {
            NegotiationViewModel vm = new NegotiationViewModel()
            {
                id        = model.id,
                productId = model.productId,
                quantity  = model.quantity,
                negotiatedPricePerItem = model.negotiatedPricePerItem,
                date                = model.negotiationDateTime.Date.ToShortDateString(),
                time                = model.negotiationDateTime.ToString("hh:mm tt"),
                totalAmount         = model.totalAmount,
                status              = model.status,
                negotiationDateTime = model.negotiationDateTime,
                orderId             = model.orderId
            };

            return(vm);
        }
        public static void UpdateNegotiation(this NegotiationViewModel viewmodel, ClientFieldData[] formData)
        {
            ClientFieldData field;

            field = formData.FirstOrDefault(x => x.Name == "IsCertifyProtest");
            viewmodel.IsCertifyProtest = field.ConvertToBool();

            field = formData.FirstOrDefault(x => x.Name == "ContractIsCertify");
            viewmodel.IsCertifyContract = field.ConvertToBool();

            field = formData.FirstOrDefault(x => x.Name == "HasProtest");
            viewmodel.HasProtest = field.ConvertToBool();

            field = formData.FirstOrDefault(x => x.Name == "hiddenJustification");
            if (field != null)
            {
                viewmodel.WinnerChanges = new WinnerChangeViewModel();
                viewmodel.WinnerChanges.Justification = field.ConvertToString();
            }

            viewmodel.FinalFirmScorings.UpdateDatatableFirmScoring(formData,
                                                                   TableValue.NEG_FINAL_FIRM_SCORING_TABLE_NAME);
            viewmodel.Comunications
            .BindDataFormDocsSimpleToModel(formData, TableValue.NEG_COMMUNICATIONS_TABLE_NAME);
            viewmodel.Negotiations.BindDocsFirm(formData,
                                                TableValue.NEG_NEGOTIATION_MINUTES_TABLE_NAME);
            viewmodel.CommitFunds.UpdateNegTCCommitFunds(formData,
                                                         TableValue.NEG_COMMIT_FUNDS_TABLE_NAME);
            viewmodel.CommitFundsSecond.UpdateNegCommitFunds(formData,
                                                             TableValue.NEG_COMMIT_FUNDS_SECOND_TABLE_NAME);
            viewmodel.ContractDates.UpdateContractDates(
                formData,
                TableValue.NEG_CONTRACT_DATES_TABLE_NAME,
                TableValue.NEG_FINAL_FIRM_SCORING_TABLE_NAME,
                viewmodel.Modality);
            viewmodel.ContractDocs.BindReoi(formData, TableValue.NEG_CONTRACT_DOCUMENTS_TABLE_NAME);
            viewmodel.ProtestDocs.Rows.BindProtestModel(formData, TableValue.NEG_PROTESTS_TABLE_NAME);
            viewmodel.Checklist.UpdateCheckList(formData, TableValue.NEG_CHECKLIST_TABLE_NAME);
        }