Exemplo n.º 1
0
        /// <summary>
        /// <para>
        /// Busca y devuelve el comercial cuyo campo 'Peer' coincide con el Peer indicado por el parametro <paramref name="peer"/>.
        /// </para>
        /// </summary>
        /// <param name="peer">Identificador peer del comercial.</param>
        /// <returns>
        /// Modelo <see cref="GetBOCommercialByPeerResponseModel"/> con los datos de la respuesta.
        /// </returns>
        public GetBOCommercialByPeerResponseModel GetCommercialByPeer(int peer)
        {
            var result = new GetBOCommercialByPeerResponseModel
            {
                status = ResultStatus.SUCCESS
            };

            try
            {
                Commercials commercial = _commercialRepository.GetAll().SingleOrDefault(c => c.Peer == peer);

                if (commercial != null)
                {
                    result.Commercial = new CommercialModel
                    {
                        CommercialId      = commercial.Id,
                        CommercialName    = String.Format("{0}", commercial.Name),
                        CommercialEmail   = commercial.Email,
                        Peer              = commercial.Peer,
                        SiebelId          = commercial.SiebelId,
                        PBXPhoneNumber    = commercial.PBXPhoneNumber,
                        MobilePhoneNumber = commercial.MobilePhoneNumber,
                        Active            = commercial.Active
                    };
                }
                else
                {
                    result.status = ResultStatus.NOT_FOUND;
                }
                return(result);
            }
            catch (Exception e)
            {
                return(new GetBOCommercialByPeerResponseModel
                {
                    status = ResultStatus.ERROR
                });
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// <para>
        /// Da de alta el comercial pasado por parámetro <paramref name="commercialRequestModel"/>.
        /// </para>
        /// </summary>
        /// <param name="commercialRequestModel">Datos del comercial que debe ser dado de alta.</param>
        /// <returns>
        /// Modelo <see cref="PostBOCommercialsResponseModel"/> con los datos de la respuesta.
        /// </returns>
        public PostBOCommercialsResponseModel CreateCommercial(PostBOCommercialsRequestModel commercialRequestModel)
        {
            PostBOCommercialsResponseModel result = new PostBOCommercialsResponseModel
            {
                Status = ResultStatus.ERROR
            };

            IDbContextTransaction dbTransaction = null;

            try
            {
                var context = _commercialRepository.GetContext();
                using (dbTransaction = context.Database.BeginTransaction())
                {
                    // Generate random pass
                    commercialRequestModel.CommercialPassword = (new Random().Next(10000000, 100000000)).ToString();

                    var toInsert = new Commercials()
                    {
                        Name                   = commercialRequestModel.CommercialName,
                        Email                  = commercialRequestModel.CommercialEmail,
                        PBXPhoneNumber         = commercialRequestModel.PBXPhoneNumber,
                        MobilePhoneNumber      = commercialRequestModel.MobilePhoneNumber,
                        Active                 = commercialRequestModel.Active,
                        Password               = _securityService.HashData(commercialRequestModel.CommercialPassword),
                        Peer                   = GetPeer(),
                        SiebelId               = commercialRequestModel.SiebelId,
                        PasswordChangeRequired = true,
                        AlternativeCommercials = new List <AlternativeCommercials>()
                    };

                    // Se da de alta en BD al nuevo comercial
                    _commercialRepository.Insert(toInsert);
                    _commercialRepository.Save();

                    foreach (AlternativeCommercialModel c in commercialRequestModel.Alternatives)
                    {
                        var alter = _commercialRepository.GetById(c.Commercial.CommercialId);
                        toInsert.AlternativeCommercials.Add(new AlternativeCommercials()
                        {
                            CommercialId            = toInsert.Id,
                            AlternativeCommercialId = c.Commercial.CommercialId,
                            Order = c.Order
                        });
                    }

                    // Se agregan los comerciales alternativos al nuevo comercial
                    _commercialRepository.Save();

                    // Conexión a PBX
                    PbxConnection pbxConnection = null;
                    if (_pbxConnect)
                    {
                        pbxConnection = new PbxConnection(_pbxServer, _pbxUser, _pbxPwd, out string pbxMsg);

                        // validacion instancia PBX
                        if (pbxConnection == null)
                        {
                            dbTransaction.Rollback();
                            result.Status  = ResultStatus.EXTERNAL_SERVICE_ERROR;
                            result.Message = "[BOCommercialsService-CreateCommercial] Could not instantiate PBX";
                            return(result);
                        }

                        // validacion PBX inicializada
                        if (!pbxConnection.IsInitialized())
                        {
                            dbTransaction.Rollback();
                            result.Status  = ResultStatus.CANNOT_CONNECT_TO_PBX;
                            result.Message = "[BOCommercialsService-CreateCommercial] " + pbxMsg;
                            return(result);
                        }

                        // petición a la PBX
                        try
                        {
                            pbxConnection.New(toInsert.Peer, toInsert.Name, toInsert.Password, () => { });
                        }
                        catch (AmiException ex)
                        {
                            dbTransaction.Rollback();

                            // Marchelo
                            // No estoy de acuerdo con retonar este error (lo correcto es utilizar el "catch (AmiException amiEx)" mas abajo)
                            // Simplemente lo dejo por consistencia con la capa HTTP.
                            result.Status  = ResultStatus.PEER_ALREADY_EXIST_IN_PBX;
                            result.Message = "[BOCommercialsService-CreateCommercial] " + ex.Message;
                            return(result);
                        }
                    }

                    result.Status   = ResultStatus.SUCCESS;
                    result.Name     = commercialRequestModel.CommercialName;
                    result.Email    = commercialRequestModel.CommercialEmail;
                    result.Password = commercialRequestModel.CommercialPassword;
                    result.Peer     = toInsert.Peer;

                    dbTransaction.Commit();
                    return(result);
                }
            }
            catch (DbUpdateException updEx)
            {
                if (dbTransaction != null)
                {
                    dbTransaction.Rollback();
                }

                SqlException sqlEx = updEx.GetBaseException() as SqlException;
                if (sqlEx != null)
                {
                    switch (sqlEx.Number)
                    {
                    case 515:     // NOT NULL values
                                  // Determino nombre de la columna que no acepta valor NULL
                                  // EJ: "Cannot insert the value NULL into column 'SiebelId', table 'InConcert.dbo.Commercials'."
                        int    indexStart = sqlEx.Message.IndexOf("'", 0) + 1;
                        int    indexEnd   = sqlEx.Message.IndexOf("'", indexStart);
                        string columName  = sqlEx.Message[indexStart..indexEnd];
Exemplo n.º 3
0
        /// <summary>
        /// <para>
        /// Elimina el comercial cuyo campo 'Id' coincide con el id indicado por el parametro <paramref id="intId"/>.
        /// </para>
        /// </summary>
        /// <param name="id">Identificador del comercial.</param>
        /// <returns>
        /// Modelo <see cref="DeleteBOCommercialsResponseModel"/> con los datos de la respuesta.
        /// </returns>
        public StatusResponseModel DeleteCommercial(int id)
        {
            StatusResponseModel result = new StatusResponseModel
            {
                Status = ResultStatus.ERROR
            };

            IDbContextTransaction dbTransaction = null;

            try
            {
                var context = _commercialRepository.GetContext();
                using (dbTransaction = context.Database.BeginTransaction())
                {
                    // Issue ICCB-735
                    Sessions session = _sessionRepository.SingleOrDefault(s => s.CommercialId == id);
                    if (session != null)
                    {
                        _sessionRepository.Delete(session);
                        _sessionRepository.Save();
                    }

                    Commercials toDelete = _commercialRepository.SingleOrDefault(c => c.Id == id);
                    if (toDelete == null)
                    {
                        result.Status  = ResultStatus.NOT_FOUND;
                        result.Message = string.Format("No records found for the commercial (id:{0}).", id);
                        return(result);
                    }

                    RemoveThisComercialAsAlternative(id);
                    RemoveAlternativesOfThisComercial(id);

                    _commercialRepository.Delete(toDelete);
                    _commercialRepository.Save();

                    // Conexión a PBX
                    PbxConnection pbxConnection = null;
                    if (_pbxConnect)
                    {
                        pbxConnection = new PbxConnection(_pbxServer, _pbxUser, _pbxPwd, out string pbxMsg);

                        // validacion instancia PBX
                        if (pbxConnection == null)
                        {
                            dbTransaction.Rollback();
                            result.Status  = ResultStatus.EXTERNAL_SERVICE_ERROR;
                            result.Message = "[BOCommercialsService-UpdateCommercial] Could not instantiate PBX";
                            return(result);
                        }

                        // validacion PBX inicializada
                        if (!pbxConnection.IsInitialized())
                        {
                            dbTransaction.Rollback();
                            result.Status  = ResultStatus.CANNOT_CONNECT_TO_PBX;
                            result.Message = pbxMsg;
                            return(result);
                        }

                        // petición Delete a la PBX
                        pbxConnection.Delete(toDelete.Peer, () => { });
                    }

                    dbTransaction.Commit();
                    result.Status = ResultStatus.SUCCESS;
                    return(result);
                }
            }
            catch (AmiException amiEx)
            {
                if (dbTransaction != null)
                {
                    dbTransaction.Rollback();
                }
                result.Status  = ResultStatus.EXTERNAL_SERVICE_ERROR;
                result.Message = "[BOCommercialsService-DeleteCommercial-AmiException] " + amiEx.Message;
                return(result);
            }
            catch (Exception e)
            {
                if (dbTransaction != null)
                {
                    dbTransaction.Rollback();
                }
                result.Status  = ResultStatus.ERROR;
                result.Message = "[BOCommercialsService-DeleteCommercial-Exception] " + e.Message;
                return(result);
            }
        }
Exemplo n.º 4
0
        /// <summary>
        /// <para>
        /// Busca y devuelve el comercial cuyo campo 'Id' coincide con el id indicado por el parametro <paramref id="intId"/>.
        /// </para>
        /// </summary>
        /// <param id="intId">Identificador del comercial.</param>
        /// <returns>
        /// Modelo <see cref="GetBOCommercialByIdResponseModel"/> con los datos de la respuesta.
        /// </returns>
        public GetBOCommercialByIdResponseModel GetCommercialById(int id)
        {
            GetBOCommercialByIdResponseModel result = new GetBOCommercialByIdResponseModel
            {
                status = ResultStatus.SUCCESS
            };

            try
            {
                Commercials commercial = _commercialRepository.GetById(id);
                if (commercial != null)
                {
                    var         alternativeCommercialsDB = new List <AlternativeCommercials>();
                    var         alternativeCommercials   = new List <AlternativeCommercialModel>();
                    Commercials c;

                    Func <AlternativeCommercials, bool> selector = c => c.CommercialId == commercial.Id;
                    alternativeCommercialsDB.AddRange(_alternativeCommercialsRepository.FindAll(selector).Cast <AlternativeCommercials>().ToList());

                    foreach (AlternativeCommercials alternativeCommercial in alternativeCommercialsDB)
                    {
                        c = _commercialRepository.GetById(alternativeCommercial.AlternativeCommercialId);

                        alternativeCommercials.Add(
                            new AlternativeCommercialModel
                        {
                            Commercial = new CommercialModel
                            {
                                CommercialId      = c.Id,
                                CommercialName    = String.Format("{0}", c.Name),
                                CommercialEmail   = c.Email,
                                Peer              = c.Peer,
                                SiebelId          = c.SiebelId,
                                PBXPhoneNumber    = c.PBXPhoneNumber,
                                MobilePhoneNumber = c.MobilePhoneNumber,
                                Active            = c.Active
                            },
                            Order = alternativeCommercial.Order
                        }
                            );
                    }

                    result.Commercial = new CommercialModel
                    {
                        CommercialId      = commercial.Id,
                        CommercialName    = String.Format("{0}", commercial.Name),
                        CommercialEmail   = commercial.Email,
                        Peer              = commercial.Peer,
                        SiebelId          = commercial.SiebelId,
                        PBXPhoneNumber    = commercial.PBXPhoneNumber,
                        MobilePhoneNumber = commercial.MobilePhoneNumber,
                        Active            = commercial.Active,
                        Alternatives      = alternativeCommercials
                    };
                }
                else
                {
                    result.status = ResultStatus.NOT_FOUND;
                }
                return(result);
            }
            catch (Exception e)
            {
                return(new GetBOCommercialByIdResponseModel
                {
                    status = ResultStatus.ERROR
                });
            }
        }
Exemplo n.º 5
0
 public CommercialsTest(TVCommercialOptimiserBase data)
 {
     commercial = data.commercial;
 }
Exemplo n.º 6
0
 public void Dispose()
 {
     commercial = null;
 }
Exemplo n.º 7
0
 public TVCommercialOptimiserBase()
 {
     commercial = new Commercials();
 }