public ActionResult EditChoice(int?id, bool?WhichEdit)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            ScheduleParameters scheduleParameters = db.ScheduleParameters.Find(id);

            if (scheduleParameters == null)
            {
                return(HttpNotFound());
            }

            if (WhichEdit == true)
            {
                return(RedirectToAction("EditMax", new { ID = id }));
            }

            if (scheduleParameters.Day == null)
            {
                return(RedirectToAction("EditWeek", new { ID = id }));
            }
            else
            {
                return(RedirectToAction("EditDay", new { ID = id }));
            }
        }
        public ActionResult DeleteConfirmed(int id)
        {
            ScheduleParameters scheduleParameters = db.ScheduleParameters.Find(id);
            ShiftsPerWeek      SperW = db.ShiftsPerWeek.FirstOrDefault();

            HsDelete.SpecialFixedFshiftDeletion();
            if (scheduleParameters.Day == null)
            {
                SperW.NumOfShifts -= scheduleParameters.Morning * 7;
                SperW.NumOfShifts -= scheduleParameters.Afternoon * 7;
                SperW.NumOfShifts -= scheduleParameters.Night * 7;

                db.Entry(SperW).State = EntityState.Modified;
                db.SaveChanges();
            }
            else
            {
                SperW.NumOfShifts -= Convert.ToInt32(scheduleParameters.DMorning);
                SperW.NumOfShifts -= Convert.ToInt32(scheduleParameters.DAfternoon);
                SperW.NumOfShifts -= Convert.ToInt32(scheduleParameters.DNight);

                db.Entry(SperW).State = EntityState.Modified;
                db.SaveChanges();
            }

            db.ScheduleParameters.Remove(scheduleParameters);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
        //######################################
        // GetSchedulesInternal
        //######################################

        internal List <Schedule> GetSchedulesInternal(ScheduleParameters parameters)
        {
            var schedules = ObjectEngine.GetObjects <Schedule>(parameters);

            foreach (var schedule in schedules)
            {
                var response = GetObjectPropertiesRawInternal(schedule.Id, ObjectType.Schedule);
                ResponseParser.LoadTimeTable(schedule, response);
            }

            return(schedules);
        }
        internal async Task <List <Schedule> > GetSchedulesInternalAsync(ScheduleParameters parameters)
        {
            var schedules = await ObjectEngine.GetObjectsAsync <Schedule>(parameters).ConfigureAwait(false);

            await Task.WhenAll(schedules.Select(async schedule =>
            {
                var response = await GetObjectPropertiesRawInternalAsync(schedule.Id, ObjectType.Schedule).ConfigureAwait(false);
                ResponseParser.LoadTimeTable(schedule, response);
            })).ConfigureAwait(false);

            return(schedules);
        }
        public ActionResult Delete(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            ScheduleParameters scheduleParameters = db.ScheduleParameters.Find(id);

            if (scheduleParameters == null)
            {
                return(HttpNotFound());
            }
            return(View(scheduleParameters));
        }
        public ActionResult EditDay(int?id, bool?whattodo)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            ScheduleParameters scheduleParameters = db.ScheduleParameters.Find(id);

            if (scheduleParameters == null)
            {
                return(HttpNotFound());
            }
            if (whattodo == true)
            {
                ModelState.AddModelError("DMorning", "Positive Numbers only");
                return(View(scheduleParameters));
            }

            return(View(scheduleParameters));
        }
Beispiel #7
0
        /// <summary>
        /// Gets the payment schedule.
        /// </summary>
        /// <param name="scheduleParameters">The schedule parameters.</param>
        /// <param name="person">The person.</param>
        /// <returns></returns>
        private PaymentSchedule GetPaymentSchedule(ScheduleParameters scheduleParameters, Person person)
        {
            if (!scheduleParameters.StartDate.HasValue)
            {
                GenerateResponse(HttpStatusCode.BadRequest, "Schedule must contain a StartDate");
                return(null);
            }

            var timeSpan = DateTime.Now - scheduleParameters.StartDate.Value;

            if (timeSpan > TimeSpan.FromDays(0))
            {
                GenerateResponse(HttpStatusCode.BadRequest, "Schedule must contain a StartDate that occurs in the future");
                return(null);
            }

            if (!scheduleParameters.FrequencyValueGuid.HasValue)
            {
                GenerateResponse(HttpStatusCode.BadRequest, "Schedule must contain a FrequencyValueGuid");
                return(null);
            }

            var frequency = DefinedValueCache.Read(scheduleParameters.FrequencyValueGuid.Value);

            if (frequency == null)
            {
                GenerateResponse(HttpStatusCode.BadRequest, "Schedule must contain a valid FrequencyValueGuid");
                return(null);
            }

            return(new PaymentSchedule {
                PersonId = person.Id,
                StartDate = scheduleParameters.StartDate.Value,
                TransactionFrequencyValue = frequency
            });
        }
        public ActionResult Create(ScheduleParameters scheduleParameters)
        {
            int TotalShifts = 0;
            int idnum       = 0;

            if (Convert.ToInt32(scheduleParameters.DMorning) < 0 || Convert.ToInt32(scheduleParameters.DAfternoon) < 0 || Convert.ToInt32(scheduleParameters.DNight) < 0)
            {
                return(RedirectToAction("DayCreate", new { whattodo = false }));
            }

            if (scheduleParameters.Day != null && db.ScheduleParameters.Select(o => o.Day != null).Count() > 7)
            {
                return(RedirectToAction("DayCreate", new { whattodo = true }));
            }
            if (scheduleParameters.Day == null & (Convert.ToInt32(scheduleParameters.DMorning) != 0 || Convert.ToInt32(scheduleParameters.DAfternoon) != 0 || Convert.ToInt32(scheduleParameters.DNight) != 0))
            {
                return(RedirectToAction("DayCreate", new { whattodo = true, require = true }));
            }
            if (db.ScheduleParameters.Where(d => d.Day == scheduleParameters.Day).Count() > 0)
            {
                return(RedirectToAction("DayCreate", new { dayexists = true }));
            }

            HsDelete.SpecialFixedFshiftDeletion();
            if (db.ShiftsPerWeek.Any())
            {
                idnum = db.ShiftsPerWeek.FirstOrDefault().ID;
            }

            if (scheduleParameters.Day == null)
            {
                if (idnum == 0)
                {
                    ShiftsPerWeek SPW = new ShiftsPerWeek
                    {
                        NumOfShifts = (scheduleParameters.Morning + scheduleParameters.Afternoon + scheduleParameters.Night) * 7
                    };
                    db.ShiftsPerWeek.Add(SPW);
                    db.SaveChanges();
                }
                else
                {
                    ShiftsPerWeek EditOldShift = db.ShiftsPerWeek.Find(idnum);
                    EditOldShift.NumOfShifts     = (scheduleParameters.Morning + scheduleParameters.Afternoon + scheduleParameters.Night) * 7;
                    db.Entry(EditOldShift).State = EntityState.Modified;
                    db.SaveChanges();
                }
            }
            else
            {
                scheduleParameters.DMorning   = scheduleParameters.DMorning == null ? 0 : scheduleParameters.DMorning;
                scheduleParameters.DAfternoon = scheduleParameters.DAfternoon == null ? 0 : scheduleParameters.DAfternoon;
                scheduleParameters.DNight     = scheduleParameters.DNight == null ? 0 : scheduleParameters.DNight;

                TotalShifts += Convert.ToInt32(scheduleParameters.DMorning);
                TotalShifts += Convert.ToInt32(scheduleParameters.DAfternoon);
                TotalShifts += Convert.ToInt32(scheduleParameters.DNight);

                TotalShifts += db.ShiftsPerWeek.Select(y => y.NumOfShifts).FirstOrDefault();
                ShiftsPerWeek SperW = db.ShiftsPerWeek.Find(idnum);
                SperW.NumOfShifts = TotalShifts;

                db.Entry(SperW).State = EntityState.Modified;
                db.SaveChanges();
            }

            if (ModelState.IsValid)
            {
                db.ScheduleParameters.Add(scheduleParameters);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            return(View(scheduleParameters));
        }
        public ActionResult Edit(ScheduleParameters scheduleParameters, bool?WhichEdit)
        {
            HsDelete.SpecialFixedFshiftDeletion();

            if (WhichEdit == true)
            {
                scheduleParameters.Morning   = db.ScheduleParameters.Select(x => x.Morning).FirstOrDefault();
                scheduleParameters.Afternoon = db.ScheduleParameters.Select(x => x.Afternoon).FirstOrDefault();
                scheduleParameters.Night     = db.ScheduleParameters.Select(x => x.Night).FirstOrDefault();

                if (scheduleParameters.MaxMorning < 0 || scheduleParameters.MaxAfternoon < 0 || scheduleParameters.MaxNight < 0)
                {
                    return(RedirectToAction("EditMax", new { scheduleParameters.ID, whattodo = true }));
                }
            }

            if (scheduleParameters.Day == null && WhichEdit == null)
            {
                if (scheduleParameters.Morning < 0 || scheduleParameters.Afternoon < 0 || scheduleParameters.Night < 0)
                {
                    return(RedirectToAction("EditWeek", new { scheduleParameters.ID, whattodo = true }));
                }

                scheduleParameters.MaxMorning   = db.ScheduleParameters.Select(x => x.MaxMorning).FirstOrDefault();
                scheduleParameters.MaxAfternoon = db.ScheduleParameters.Select(x => x.MaxAfternoon).FirstOrDefault();
                scheduleParameters.MaxNight     = db.ScheduleParameters.Select(x => x.MaxNight).FirstOrDefault();

                if (scheduleParameters.Morning != db.ScheduleParameters.Select(x => x.Morning).FirstOrDefault())
                {
                    ShiftsPerWeek SperW = db.ShiftsPerWeek.FirstOrDefault();
                    SperW.NumOfShifts += (scheduleParameters.Morning - db.ScheduleParameters.Select(x => x.Morning).FirstOrDefault()) * 7;

                    db.Entry(SperW).State = EntityState.Modified;
                    db.SaveChanges();
                }

                if (scheduleParameters.Afternoon != db.ScheduleParameters.Select(x => x.Afternoon).FirstOrDefault())
                {
                    ShiftsPerWeek SperW = db.ShiftsPerWeek.FirstOrDefault();
                    SperW.NumOfShifts += (scheduleParameters.Afternoon - db.ScheduleParameters.Select(x => x.Afternoon).FirstOrDefault()) * 7;

                    db.Entry(SperW).State = EntityState.Modified;
                    db.SaveChanges();
                }

                if (scheduleParameters.Night != db.ScheduleParameters.Select(x => x.Night).FirstOrDefault())
                {
                    ShiftsPerWeek SperW = db.ShiftsPerWeek.FirstOrDefault();
                    SperW.NumOfShifts += (scheduleParameters.Night - db.ScheduleParameters.Select(x => x.Night).FirstOrDefault()) * 7;

                    db.Entry(SperW).State = EntityState.Modified;
                    db.SaveChanges();
                }
            }
            else if (scheduleParameters.Day != null && WhichEdit == null)
            {
                if (scheduleParameters.DMorning < 0 || scheduleParameters.DAfternoon < 0 || scheduleParameters.DNight < 0)
                {
                    return(RedirectToAction("EditDay", new { scheduleParameters.ID, whattodo = true }));
                }

                if (scheduleParameters.DMorning != 0)
                {
                    ShiftsPerWeek SperW = db.ShiftsPerWeek.FirstOrDefault();
                    SperW.NumOfShifts    += Convert.ToInt32(scheduleParameters.DMorning);
                    db.Entry(SperW).State = EntityState.Modified;
                    db.SaveChanges();
                }

                if (scheduleParameters.DAfternoon != 0)
                {
                    ShiftsPerWeek SperW = db.ShiftsPerWeek.FirstOrDefault();
                    SperW.NumOfShifts += Convert.ToInt32(scheduleParameters.DAfternoon);

                    db.Entry(SperW).State = EntityState.Modified;
                    db.SaveChanges();
                }

                if (scheduleParameters.DNight != 0)
                {
                    ShiftsPerWeek SperW = db.ShiftsPerWeek.FirstOrDefault();
                    SperW.NumOfShifts += Convert.ToInt32(scheduleParameters.DNight);

                    db.Entry(SperW).State = EntityState.Modified;
                    db.SaveChanges();
                }
            }

            if (ModelState.IsValid)
            {
                db.Entry(scheduleParameters).State = EntityState.Modified;
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }
            return(View(scheduleParameters));
        }
        /// <summary>
        /// Gets the payment schedule.
        /// </summary>
        /// <param name="scheduleParameters">The schedule parameters.</param>
        /// <param name="person">The person.</param>
        /// <returns></returns>
        private PaymentSchedule GetPaymentSchedule( ScheduleParameters scheduleParameters, Person person )
        {
            if ( !scheduleParameters.StartDate.HasValue )
            {
                GenerateResponse( HttpStatusCode.BadRequest, "Schedule must contain a StartDate" );
                return null;
            }

            var timeSpan = DateTime.Now - scheduleParameters.StartDate.Value;

            if ( timeSpan > TimeSpan.FromDays( 0 ) )
            {
                GenerateResponse( HttpStatusCode.BadRequest, "Schedule must contain a StartDate that occurs in the future" );
                return null;
            }

            if ( !scheduleParameters.FrequencyValueGuid.HasValue )
            {
                GenerateResponse( HttpStatusCode.BadRequest, "Schedule must contain a FrequencyValueGuid" );
                return null;
            }

            var frequency = DefinedValueCache.Read( scheduleParameters.FrequencyValueGuid.Value );

            if ( frequency == null )
            {
                GenerateResponse( HttpStatusCode.BadRequest, "Schedule must contain a valid FrequencyValueGuid" );
                return null;
            }

            return new PaymentSchedule {
                PersonId = person.Id,
                StartDate = scheduleParameters.StartDate.Value,
                TransactionFrequencyValue = frequency
            };
        }
Beispiel #11
0
        public HttpResponseMessage NextCallPost([FromBody] AgentParameters agent)
        {
            try
            {
                if (MainObject.MainList.ContainsKey(agent.User.AgentId))
                {
                    CApp mpApp = MainObject.MainList[agent.User.AgentId];

                    if (mpApp.CurrentService.RequireDisposition)
                    {
                        if (agent.DispositionClass != null)
                        {
                            CDisposition pDisp;
                            if (mpApp.CurrentCall != null && mpApp.CurrentCall.CurrentState is CStatePreview)
                            {
                                pDisp = new CDisposition(agent.DispositionClass.Id, agent.DispositionClass.Description,
                                                         agent.DispositionClass.Code, true, false, false);
                            }
                            else
                            {
                                pDisp = new CDisposition(agent.DispositionClass.Id, agent.DispositionClass.Description,
                                                         agent.DispositionClass.Code, false, false, false);
                            }

                            try
                            {
                                if (agent.DispositionClass.Id == 1005 || agent.DispositionClass.Id == 1006)
                                {
                                    string nameCustomer = mpApp.CurrentCall.FirstName;
                                    string phonenumber  = mpApp.CurrentCall.PhoneNumber;

                                    mpApp.ScheduleCallback(mpApp.CurrentCall, pDisp, agent.DispositionClass.Date);
                                    mpApp.DisposeCall(mpApp.CurrentCall, pDisp);

                                    ScheduleParameters scheduleparameters = new ScheduleParameters();
                                    scheduleparameters.Id_Disposition          = pDisp.Id;
                                    scheduleparameters.Description_Disposition = pDisp.Description;
                                    scheduleparameters.Name_Customer           = nameCustomer;
                                    scheduleparameters.PhoneNumber             = phonenumber;
                                    scheduleparameters.AgentId       = agent.User.AgentId;
                                    scheduleparameters.Date_Schedule = agent.DispositionClass.Date;

                                    return(Request.CreateResponse(HttpStatusCode.OK, scheduleparameters));
                                }
                                else
                                {
                                    mpApp.DisposeCall(mpApp.CurrentCall, pDisp);
                                    return(Request.CreateResponse(HttpStatusCode.OK, "OK"));
                                }
                            }
                            catch (Exception ex)
                            {
                                Log.logException(ex);
                                return(Request.CreateResponse(HttpStatusCode.BadRequest, ex.Message));
                            }
                        }
                        else
                        {
                            try
                            {
                                mpApp.DisposeCall(mpApp.CurrentCall, null);
                                return(Request.CreateResponse(HttpStatusCode.OK, "OK"));
                            }
                            catch (Exception ex)
                            {
                                Log.logException(ex);
                                return(Request.CreateResponse(HttpStatusCode.BadRequest, ex.Message));
                            }
                        }
                    }
                    else
                    {
                        return(Request.CreateResponse(HttpStatusCode.NotAcceptable, "Not Require Disposition"));
                    }
                }
                else
                {
                    return(Request.CreateResponse(HttpStatusCode.NotFound, "Agent Not Found"));
                }
            }
            catch (Exception ex)
            {
                Log.logException(ex);
                return(Request.CreateResponse(HttpStatusCode.BadRequest, ex.Message));
            }
        }
 public void RemoveParameter()
 {
     ScheduleParameters.Remove(ScheduleParametersSelectedItem);
     NotifyOfPropertyChange(() => CanRemoveParameter);
 }
Beispiel #13
0
        public HttpResponseMessage ScheduleGiving([FromBody] ScheduleParameters scheduleParameters)
        {
            var rockContext = new RockContext();

            try
            {
                rockContext.WrapTransaction(() =>
                {
                    var person = GetExistingPerson(scheduleParameters.PersonId, rockContext);

                    if (person == null)
                    {
                        GenerateResponse(HttpStatusCode.BadRequest, "An existing person is required to schedule giving");
                    }

                    var totalAmount      = CalculateTotalAmount(scheduleParameters, rockContext);
                    var paymentSchedule  = GetPaymentSchedule(scheduleParameters, person);
                    var gatewayComponent = GatewayContainer.GetComponent(gatewayName);

                    if (gatewayComponent == null)
                    {
                        GenerateResponse(HttpStatusCode.InternalServerError, "There was a problem creating the gateway component");
                    }

                    var financialGateway = new FinancialGatewayService(rockContext).Queryable().FirstOrDefault(g => g.EntityTypeId == gatewayComponent.EntityType.Id);

                    if (financialGateway == null)
                    {
                        GenerateResponse(HttpStatusCode.InternalServerError, "There was a problem creating the financial gateway");
                    }

                    var savedAccount = GetExistingSavedAccount(scheduleParameters, person, rockContext);
                    FinancialPaymentDetail paymentDetail = null;
                    PaymentInfo paymentInfo = null;
                    int?locationId          = null;

                    if (savedAccount == null)
                    {
                        locationId    = CreateLocation(scheduleParameters, rockContext);
                        paymentDetail = CreatePaymentDetail(scheduleParameters, person, locationId.Value, rockContext);
                        savedAccount  = CreateSavedAccount(scheduleParameters, paymentDetail, financialGateway, person, rockContext);
                        paymentInfo   = GetPaymentInfo(scheduleParameters, person, rockContext, totalAmount.Value, paymentDetail);
                    }
                    else
                    {
                        paymentDetail = savedAccount.FinancialPaymentDetail;
                        locationId    = paymentDetail.BillingLocationId;
                        paymentInfo   = savedAccount.GetReferencePayment();
                        UpdatePaymentInfoForSavedAccount(scheduleParameters, paymentInfo, person, rockContext, paymentDetail.BillingLocationId.Value, totalAmount.Value);
                    }

                    SaveLocationToFamilyIfNone(person, locationId.Value, rockContext);
                    string errorMessage;
                    var schedule = gatewayComponent.AddScheduledPayment(financialGateway, paymentSchedule, paymentInfo, out errorMessage);

                    if (schedule == null || !string.IsNullOrWhiteSpace(errorMessage))
                    {
                        GenerateResponse(HttpStatusCode.InternalServerError, errorMessage ?? "The gateway had a problem and/or did not create a transaction as expected");
                    }

                    schedule.TransactionFrequencyValueId = paymentSchedule.TransactionFrequencyValue.Id;

                    if (person.PrimaryAliasId.HasValue)
                    {
                        schedule.AuthorizedPersonAliasId = person.PrimaryAliasId.Value;
                    }

                    schedule.FinancialPaymentDetail = paymentDetail;
                    schedule.FinancialPaymentDetail.CurrencyTypeValueId = paymentInfo.CurrencyTypeValue.Id;

                    if (paymentInfo.CreditCardTypeValue != null)
                    {
                        schedule.FinancialPaymentDetail.CreditCardTypeValueId = paymentInfo.CreditCardTypeValue.Id;
                    }

                    foreach (var accountAmount in scheduleParameters.AmountDetails)
                    {
                        schedule.ScheduledTransactionDetails.Add(new FinancialScheduledTransactionDetail()
                        {
                            Amount    = accountAmount.Amount,
                            AccountId = accountAmount.TargetAccountId
                        });
                    }

                    new FinancialScheduledTransactionService(rockContext).Add(schedule);
                    rockContext.SaveChanges();
                });
            }
            catch (HttpResponseException exception)
            {
                return(exception.Response);
            }
            catch (Exception exception)
            {
                var response = new HttpResponseMessage(HttpStatusCode.InternalServerError);
                response.Content = new StringContent(exception.Message);
                return(response);
            }

            return(new HttpResponseMessage(HttpStatusCode.NoContent));
        }
Beispiel #14
0
 // POST: api/ReferenceData
 public ReferenceData Post([FromBody] ScheduleParameters scheduleParameters) => ReferenceDataRepository.GetReferenceData(scheduleParameters);