Example #1
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));
            }
        }