public ActionResult NextStep(HourlyWorkersViewModel model, string BtnPrevious, string BtnNext)
        {
            HourlyWorkersViewModel details = GetContactDetails();

            if (IsNotValidDetails)
            {
                return(RedirectToAction("Create"));
            }

            if (BtnPrevious != null)
            {
                return(View("ConfirmTimeTable", details));
            }
            if (BtnNext != null)
            {
                details.Longitude    = model.Longitude;
                details.Latitude     = model.Latitude;
                details.AddressNotes = model.AddressNotes;
                details.HouseType    = model.HouseType;
                details.HouseNo      = model.HouseNo;
                details.FloorNo      = model.FloorNo;
                details.PartmentNo   = model.PartmentNo;

                Session["HourlyWorkers"] = details;
                return(View("Finish", details));
            }
            return(View("PickLocation", details));
        }
 private HourlyWorkersViewModel GetContactDetails(string promotionCode = null)
 {
     if (Session["HourlyWorkers"] == null)
     {
         var model = new HourlyWorkersViewModel();
         model.PromotionCode      = promotionCode;
         Session["HourlyWorkers"] = model;
     }
     return((HourlyWorkersViewModel)Session["HourlyWorkers"]);
 }
        public async Task <ActionResult> Create(HourlyWorkersViewModel model, string BtnNext)
        {
            if (BtnNext == null)
            {
                return(View(model));
            }
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            HourlyWorkersViewModel details = GetContactDetails();

            details.CityId                  = model.CityId;
            details.DistrictId              = model.DistrictId;
            details.NumOfWorkers            = model.NumOfWorkers;
            details.NumOfVisits             = model.NumOfVisits;
            details.NumOfHours              = model.NumOfHours;
            details.AvailableDays           = model.AvailableDays;
            details.StartDay                = model.StartDay;
            details.ContractDuration        = model.ContractDuration;
            details.Nationality             = model.Nationality;
            details.HourlypricingId         = model.HourlypricingId;
            details.IsMorningShift          = model.IsMorningShift;
            details.AgreedToTerms           = model.AgreedToTerms;
            details.CityName                = model.CityName;
            details.DistrictName            = model.DistrictName;
            details.NationalityName         = model.NationalityName;
            details.NumOfVisitsWritten      = model.NumOfVisitsWritten;
            details.ContractDurationWritten = model.ContractDurationWritten;
            details.TotalPrice              = model.TotalPrice;
            details.TotalBeforeDiscount     = model.TotalBeforeDiscount;

            details.Discount                     = model.Discount;
            details.VatRate                      = model.VatRate;
            details.VatAmount                    = model.VatAmount;
            details.TotalPriceWithVat            = model.TotalPriceWithVat;
            details.PromotionCode                = model.PromotionCode;
            details.TotalPriceAfterPromotion     = model.TotalPriceAfterPromotion;
            details.TotalPromotionDiscountAmount = model.TotalPromotionDiscountAmount;
            details.PromotionExtraVisits         = model.PromotionExtraVisits;
            details.PromotionName                = model.PromotionName;

            details = await SetTimeTable(details);

            Session["HourlyWorkers"] = details;
            return(View("ConfirmTimeTable", details));
        }
        public async Task <ActionResult> Create(string promotionCode = null)
        {
            var currentUser = UserManager.FindById(User.Identity.GetUserId());
            var data        = await GetResourceAsync <dynamic>("api/HourlyContract/GetLatestNotPaidContract/" + currentUser.CrmUserId);

            if (string.IsNullOrEmpty(data))
            {
                HourlyWorkersViewModel model = GetContactDetails(promotionCode);
                ViewBag.MorningOffset = ConfigurationSettings.AppSettings["MorningOffset"];
                ViewBag.EveningOffset = ConfigurationSettings.AppSettings["EveningOffset"];
                return(View(model));
            }
            else
            {
                return(RedirectToAction("Details", "HourlyWorkers", new { id = data }));
            }
        }
        public ActionResult Next(HourlyWorkersViewModel model, string BtnPrevious, string BtnNext)
        {
            HourlyWorkersViewModel details = GetContactDetails();

            if (IsNotValidDetails)
            {
                return(RedirectToAction("Create"));
            }

            if (BtnPrevious != null)
            {
                ModelState.Clear();
                return(View("Create", details));
            }
            if (BtnNext != null)
            {
                return(View("PickLocation", details));
            }
            return(View("ConfirmTimeTable", details));
        }
        public async Task <ActionResult> Finish(string BtnPrevious, string BtnNext)
        {
            HourlyWorkersViewModel details = GetContactDetails();

            if (IsNotValidDetails)
            {
                return(RedirectToAction("Create"));
            }

            if (BtnPrevious != null)
            {
                return(View("PickLocation", details));
            }

            if (!await IsProfileCompleted())
            {
                return(RedirectToAction("CompleteProfile", "Account", new { returnUrl = Url.Action("Finish", "HourlyWorkers") }));
            }
            var currentUser = UserManager.FindById(User.Identity.GetUserId());
            var data        = new ContractViewModel(details);

            data.CustomerId = currentUser.CrmUserId;
            var newContract = await PostResourceAsync <ContractViewModel>("api/HourlyContract", data);

            if (newContract.StatusCode == HttpStatusCode.OK)
            {
                data.ContractId  = newContract.Result.ContractId;
                data.ContractNum = newContract.Result.ContractNum;

                data.PriceBeforeDiscount = (Session["HourlyWorkers"] as HourlyWorkersViewModel).TotalBeforeDiscount;
                data.FinalPrice          = newContract.Result.FinalPrice;
                data.VatRate             = Math.Round((decimal.Parse(data.FinalPrice) - decimal.Parse(data.PriceBeforeDiscount)) / decimal.Parse(data.PriceBeforeDiscount), 2).ToString();
                data.VatAmount           = Math.Round((decimal.Parse(data.FinalPrice) - decimal.Parse(data.PriceBeforeDiscount))).ToString();

                Session["ContractToPayData"] = data;
                RemoveContactDetails();
                return(View("Success", newContract.Result));
            }
            return(View("Error", details));
        }
        private async Task <HourlyWorkersViewModel> SetTimeTable(HourlyWorkersViewModel details)
        {
            if (details == null)
            {
                return(new HourlyWorkersViewModel());
            }
            string link = string.Format("api/HourlyPricing/ContractDays?ContractStartDate={0}&NoOfMonths={1}&Days={2}&hours={3}&shift={4}",
                                        details.StartDay,
                                        details.ContractDuration + details.PromotionExtraVisits,
                                        string.Join(",", details.AvailableDays),
                                        details.NumOfHours, details.IsMorningShift);

            JArray data = await GetResourceAsync <dynamic>(link);

            var t = data.ToObject <string[]>();

            //if (result != null)
            //{
            //    data = JsonConvert.DeserializeObject<string[]>(result);
            //}
            details.ConfirmTimeTableList = t.ToList();
            return(details);
        }