Exemplo n.º 1
0
        /// <summary>
        /// Guarda|Actualiza un registro en el catalogo
        /// </summary>
        /// <param name="salesRoom">Objeto a guardar</param>
        /// <param name="blnUpdate">True. Actualiza | False. Inserta</param>
        /// <returns>-1 Existe un registro con el mismo ID | 0. No se guardó | 1. Se guardó</returns>
        /// <history>
        /// [emoguel] created 22/04/2016
        /// </history>
        public static int SaveSalesRoom(SalesRoom salesRoom, bool blnUpdate)
        {
            using (var dbContext = new IMEntities(ConnectionHelper.ConnectionString()))
            {
                int nRes = 0;
                #region Update
                if (blnUpdate)
                {
                    dbContext.Entry(salesRoom).State = System.Data.Entity.EntityState.Modified;
                    return(dbContext.SaveChanges());
                }
                #endregion
                #region Add
                else
                {
                    using (var transaction = dbContext.Database.BeginTransaction(System.Data.IsolationLevel.Serializable))
                    {
                        try
                        {
                            SalesRoom salesRoomVal = dbContext.SalesRooms.Where(sr => sr.srID == salesRoom.srID).FirstOrDefault();
                            if (salesRoomVal != null)
                            {
                                return(-1);
                            }
                            else
                            {
                                var GetDate = BRHelpers.GetServerDate();
                                salesRoom.srGiftsRcptCloseD   = GetDate;
                                salesRoom.srCxCCloseD         = GetDate;
                                salesRoom.srShowsCloseD       = GetDate;
                                salesRoom.srMealTicketsCloseD = GetDate;
                                salesRoom.srSalesCloseD       = GetDate;

                                dbContext.SalesRooms.Add(salesRoom);
                                if (dbContext.SaveChanges() > 0)
                                {
                                    dbContext.USP_OR_AddAccessAdministrator("SR");
                                    dbContext.SaveChanges();
                                    nRes = 1;
                                    transaction.Commit();
                                }
                                else
                                {
                                    transaction.Rollback();
                                    return(0);
                                }
                            }
                        }
                        catch
                        {
                            transaction.Rollback();
                            nRes = 0;
                        }
                    }
                }
                #endregion
                return(nRes);
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Elimina un MailOut de MailOuts y MailOutTexts
        /// </summary>
        /// <param name="_mols">mols</param>
        /// <param name="_moCode">moCode</param>
        /// <returns>-1 Error -0 Ya existe ese MailOut - >0 Registros Afectados</returns>
        /// <history>
        /// [erosado] 20/04/2016  Created
        /// [erosado] 06/07/2016  Modified. Se agregó async.
        /// </history>
        public async static Task <int> InsertMailOut(string _mols, string _moCode)
        {
            int result = 0;
            await Task.Run(() =>
            {
                using (var dbContext = new IMEntities(ConnectionHelper.ConnectionString()))
                {
                    using (var transaction = dbContext.Database.BeginTransaction(System.Data.IsolationLevel.Serializable))
                    {
                        try
                        {
                            //Verificamos que no exista un MailOut igual al que queremos insertar
                            if (dbContext.MailOuts.Any(x => x.mols == _mols && x.moCode == _moCode))
                            {
                                result = 0;
                            }
                            else
                            {
                                //Agregamos el nuevo MailOut
                                dbContext.Entry(
                                    new MailOut()
                                {
                                    mols   = _mols,
                                    moCode = _moCode
                                }).State = System.Data.Entity.EntityState.Added;

                                //Lista de Languages
                                List <string> languages = dbContext.Languages.Select(x => x.laID).ToList();

                                //Insertamos un MailOutText Por cada Lenguaje
                                languages.ForEach(laID => dbContext.MailOutTexts.Add(
                                                      new MailOutText()
                                {
                                    mtls     = _mols,
                                    mtmoCode = _moCode,
                                    mtla     = laID,
                                    mtU      = BRHelpers.GetServerDateTime()
                                }));

                                //Guardamos Cambios
                                dbContext.SaveChanges();
                                transaction.Commit();
                                result = 1;
                            }
                        }
                        catch
                        {
                            transaction.Rollback();
                            throw;
                        }
                    }
                }
            });

            return(result);
        }
Exemplo n.º 3
0
        /// <summary>
        ///   Agrega | Actualiza un equipo de PRs
        /// </summary>
        /// <param name="idUser">Clave de usuario</param>
        /// <param name="team">Objeto a guardar</param>
        /// <param name="blnUpdate">True - Actualiza | False - Agrega</param>
        /// <param name="lstAdd">Personnels a asignar al equipo</param>
        /// <param name="lstDel">Personeels a remover del equipo</param>
        /// <param name="lstChanged">Lista de integrantes que tuvieron cambios</param>
        /// <returns>0. No se guardó | 1. Se guardó | -1. Existe un registro con el mismo ID</returns>
        /// <history>
        ///   [vku] 13/Jul/2016 Created
        /// </history>
        public async static Task <int> SaveTeam(string idUser, TeamGuestServices team, bool blnUpdate, List <Personnel> lstAdd, List <Personnel> lstDel, List <Personnel> lstChanged)
        {
            bool HadPost = false;
            int  nRes    = await Task.Run(() =>
            {
                using (var dbContext = new IMEntities(ConnectionHelper.ConnectionString()))
                {
                    using (var transaction = dbContext.Database.BeginTransaction(System.Data.IsolationLevel.Serializable))
                    {
                        try
                        {
                            #region ChangePersonnel
                            if (lstChanged.Count > 0)
                            {
                                foreach (Personnel pe in lstChanged)
                                {
                                    dbContext.Entry(pe).State = EntityState.Modified;
                                }
                            }
                            #endregion

                            #region Update
                            if (blnUpdate)
                            {
                                dbContext.Entry(team).State = EntityState.Modified;
                            }
                            #endregion
                            #region Add
                            else
                            {
                                TeamGuestServices teamVal = dbContext.TeamsGuestServices.Where(te => te.tgID == team.tgID).FirstOrDefault();
                                if (teamVal != null)
                                {
                                    return(-1);
                                }
                                else
                                {
                                    dbContext.TeamsGuestServices.Add(team);
                                }
                            }
                            #endregion

                            #region addPerssonnel
                            if (lstAdd.Count > 0)
                            {
                                dbContext.Personnels.AsEnumerable().Where(pe => lstAdd.Any(pee => pee.peID == pe.peID)).ToList().ForEach(pe =>
                                {
                                    pe.peTeamType = EnumToListHelper.GetEnumDescription(EnumTeamType.TeamPRs);
                                    pe.pePlaceID  = team.tglo;
                                    pe.peTeam     = team.tgID;
                                    if (pe.pepo == "GS" || pe.pepo == "OPC")
                                    {
                                        HadPost = true;
                                    }
                                    if (BRPrograms.GetProgramByLocation(team.tglo) == EnumToListHelper.GetEnumDescription(EnumProgram.Inhouse))
                                    {
                                        pe.pepo = "GS";
                                    }
                                    else
                                    {
                                        pe.pepo = "OPC";
                                    }

                                    DateTime dtmServerDate = BRHelpers.GetServerDateTime();

                                    TeamLog teamLog     = new TeamLog();
                                    teamLog.tlDT        = dtmServerDate;
                                    teamLog.tlChangedBy = idUser;
                                    teamLog.tlpe        = pe.peID;
                                    teamLog.tlTeamType  = pe.peTeamType;
                                    teamLog.tlPlaceID   = pe.pePlaceID;
                                    teamLog.tlTeam      = pe.peTeam;
                                    dbContext.TeamsLogs.Add(teamLog);
                                    if (HadPost == false)
                                    {
                                        PostLog postLog     = new PostLog();
                                        postLog.ppChangedBy = idUser;
                                        postLog.ppDT        = dtmServerDate;
                                        postLog.pppe        = pe.peID;
                                        postLog.pppo        = pe.pepo;
                                        dbContext.PostsLogs.Add(postLog);
                                    }
                                });
                            }
                            #endregion

                            #region del Personnel
                            if (lstDel.Count > 0)
                            {
                                dbContext.Personnels.AsEnumerable().Where(pe => lstDel.Any(pee => pee.peID == pe.peID)).ToList().ForEach(pe =>
                                {
                                    pe.peTeamType = null;
                                    pe.pePlaceID  = null;
                                    pe.peTeam     = null;
                                    pe.pepo       = null;
                                    pe.peLinerID  = null;

                                    DateTime dtmServerDate = BRHelpers.GetServerDateTime();

                                    TeamLog teamLog     = new TeamLog();
                                    teamLog.tlDT        = dtmServerDate;
                                    teamLog.tlChangedBy = idUser;
                                    teamLog.tlpe        = pe.peID;
                                    teamLog.tlTeamType  = pe.peTeamType;
                                    teamLog.tlPlaceID   = pe.pePlaceID;
                                    teamLog.tlTeam      = pe.peTeam;
                                    dbContext.TeamsLogs.Add(teamLog);

                                    PostLog postLog     = new PostLog();
                                    postLog.ppChangedBy = idUser;
                                    postLog.ppDT        = dtmServerDate;
                                    postLog.pppe        = pe.peID;
                                    postLog.pppo        = pe.pepo;
                                    dbContext.PostsLogs.Add(postLog);
                                });
                            }
                            #endregion

                            int nSave = dbContext.SaveChanges();
                            transaction.Commit();
                            return(nSave);
                        }
                        catch
                        {
                            transaction.Rollback();
                            return(0);
                        }
                    }
                }
            });

            return(nRes);
        }
Exemplo n.º 4
0
 /// <summary>
 /// Obtiene Un reporte RptPremanifest
 /// </summary>
 /// <param name="date">Fecha</param>
 /// <param name="placeId">ID de Palace</param>
 /// <param name="markets">Mercado</param>
 /// <param name="onGroup">OnGroup
 /// 0. No en Grupo
 /// 1. En Grupo
 /// 2. Sin Filtro</param>
 /// <param name="salesRoom">ID de SalesRoom</param>
 /// <history>
 /// [ecanul] 18/04/2016 Created
 /// [edgrodriguez] 21/06/2016 Modified. Se aplico asincronia. Y se cambiaron algunas variales a opcionales.
 /// </history>
 public static async Task <List <RptPremanifest> > GetRptPremanifest(DateTime date, string placeId = "ALL", string markets = "ALL", int onGroup = 2, string salesRoom = "ALL")
 {
     return(await Task.Run(() =>
     {
         using (var dbContext = new IMEntities(ConnectionHelper.ConnectionString()))
         {
             return dbContext.USP_OR_RptPremanifest(date, placeId, salesRoom, markets, onGroup, false, false, BRHelpers.GetServerDate()).ToList();
         }
     }));
 }
Exemplo n.º 5
0
        /// <summary>
        /// Agrega|Actualiza los datos de un LeadSource
        /// </summary>
        /// <param name="leadSource">Objeto a guardar</param>
        /// <param name="lstLocAdd">Locaciones a relacionar</param>
        /// <param name="lstLocDel">Locaciones a des-relacionar</param>
        /// <param name="lstAgeAdd">Agencias a relacionar</param>
        /// <param name="lstAgeDel">Agencias a desrelacionar</param>
        /// <param name="blnUpdate">True. Actualiza | False. Elimina</param>
        /// <returns>-1. Existe un registro con el mismo ID | 0. No se guardó | >1. Se guardó correctamente</returns>
        /// <history>
        /// [emoguel] created 17/05/2016
        /// [emoguel] modified 27/06/2016 --> se volvió async
        /// </history>
        public async static Task <int> SaveLeadSource(LeadSource leadSource, List <Location> lstLocAdd, List <Location> lstLocDel, List <Agency> lstAgeAdd, List <Agency> lstAgeDel, bool blnUpdate)
        {
            return(await Task.Run(() =>
            {
                using (var dbContext = new IMEntities(ConnectionHelper.ConnectionString()))
                {
                    using (var transaction = dbContext.Database.BeginTransaction(System.Data.IsolationLevel.Serializable))
                    {
                        try
                        {
                            #region LeadSources
                            LeadSource leadSourceSave = null;
                            #region Update
                            if (blnUpdate)
                            {
                                leadSourceSave = dbContext.LeadSources.Where(ls => ls.lsID == leadSource.lsID).Include("Agencies").FirstOrDefault();
                                ObjectHelper.CopyProperties(leadSourceSave, leadSource);
                            }
                            #endregion
                            #region Insert
                            else
                            {
                                leadSourceSave = dbContext.LeadSources.Where(ls => ls.lsID == leadSource.lsID).FirstOrDefault();
                                if (leadSourceSave != null)
                                {
                                    return -1;
                                }
                                else
                                {
                                    DateTime dtServer = BRHelpers.GetServerDateTime();
                                    leadSource.lsTransBridgeDT = dtServer;
                                    leadSource.lsTransDT = dtServer;
                                    dbContext.LeadSources.Add(leadSource);
                                    leadSourceSave = leadSource;
                                }

                                List <Language> lstLanguages = dbContext.Languages.ToList();

                                #region MailOuts
                                MailOut mailOut = new MailOut {
                                    mols = leadSourceSave.lsID, moCode = "WELCOME"
                                };
                                #endregion

                                #region Mail Outs Text y Invits Text
                                lstLanguages.ForEach(la =>
                                {
                                    MailOutText mailOutText = new MailOutText
                                    {
                                        mtls = leadSourceSave.lsID,
                                        mtmoCode = "WLECOME",
                                        mtla = la.laID
                                    };

                                    InvitationText invitationText = new InvitationText
                                    {
                                        itls = leadSourceSave.lsID,
                                        itla = la.laID,
                                        itRTF = "<No text Saved>"
                                    };
                                });
                                #endregion
                            }
                            #endregion
                            #endregion

                            #region Agencies
                            lstAgeDel.ForEach(ag =>
                            {
                                leadSourceSave.Agencies.Remove(leadSourceSave.Agencies.Where(agg => agg.agID == ag.agID).FirstOrDefault());
                            });

                            lstAgeAdd.ForEach(ag =>
                            {
                                leadSourceSave.Agencies.Add(dbContext.Agencies.Where(agg => agg.agID == ag.agID).FirstOrDefault());
                            });
                            #endregion

                            #region Locations
                            dbContext.Locations.AsEnumerable().Where(lo => lstLocAdd.Any(loc => loc.loID == lo.loID)).ToList().ForEach(lo =>
                            {
                                lo.lols = leadSourceSave.lsID;
                                dbContext.Entry(lo).State = EntityState.Modified;
                            });

                            dbContext.Locations.AsEnumerable().Where(lo => lstLocDel.Any(loc => loc.loID == lo.loID)).ToList().ForEach(lo =>
                            {
                                lo.lols = null;
                                dbContext.Entry(lo).State = EntityState.Modified;
                            });
                            #endregion

                            int nRes = dbContext.SaveChanges();
                            if (!blnUpdate)
                            {
                                dbContext.USP_OR_AddAccessAdministrator("LS");
                                dbContext.SaveChanges();
                            }
                            transaction.Commit();
                            ObjectHelper.CopyProperties(leadSource, leadSourceSave, true);
                            return nRes;
                        }
                        catch
                        {
                            transaction.Rollback();
                            return 0;
                        }
                    }
                }
            }));
        }
Exemplo n.º 6
0
        /// <summary>
        ///    Agrega | Actualiza un equipo de PRs
        /// </summary>
        /// <param name="idUser">Clave de usuario</param>
        /// <param name="team">Objeto a guardar</param>
        /// <param name="blnUpdate">True - Actualiza | False - Agrega</param>
        /// <param name="lstAdd">Personnels a asignar al equipo</param>
        /// <param name="lstDel">Personeels a remover del equipo</param>
        /// <param name="lstChanged">Lista de integrantes que tuvieron cambios</param>
        /// <returns>0. No se guardó | 1. Se guardó | -1. Existe un registro con el mismo ID</returns>
        /// <history>
        ///   [vku] 23/Jul/2016 Created
        /// </history>
        public async static Task <int> SaveTeam(string idUser, TeamSalesmen team, bool blnUpdate, List <Personnel> lstAdd, List <Personnel> lstDel, List <Personnel> lstChanged)
        {
            int nRes = await Task.Run(() =>
            {
                using (var dbContext = new IMEntities(ConnectionHelper.ConnectionString()))
                {
                    using (var transaction = dbContext.Database.BeginTransaction(System.Data.IsolationLevel.Serializable))
                    {
                        try
                        {
                            #region ChangePersonnel
                            if (lstChanged.Count > 0)
                            {
                                foreach (Personnel p in lstChanged)
                                {
                                    dbContext.Entry(p).State = EntityState.Modified;

                                    DateTime dtmServerDate = BRHelpers.GetServerDateTime();

                                    PostLog postLog     = new PostLog();
                                    postLog.ppChangedBy = idUser;
                                    postLog.ppDT        = dtmServerDate;
                                    postLog.pppe        = p.peID;
                                    postLog.pppo        = p.pepo;
                                    dbContext.PostsLogs.Add(postLog);
                                }
                            }
                            #endregion

                            #region Update
                            if (blnUpdate)
                            {
                                dbContext.Entry(team).State = EntityState.Modified;
                            }
                            #endregion
                            #region Add
                            else
                            {
                                TeamSalesmen teamVal = dbContext.TeamsSalesmen.Where(te => te.tsID == team.tsID).FirstOrDefault();
                                if (teamVal != null)
                                {
                                    return(-1);
                                }
                                else
                                {
                                    dbContext.TeamsSalesmen.Add(team);
                                }
                            }
                            #endregion

                            #region addPerssonnel
                            if (lstAdd.Count > 0)
                            {
                                dbContext.Personnels.AsEnumerable().Where(pe => lstAdd.Any(pee => pee.peID == pe.peID)).ToList().ForEach(pe =>
                                {
                                    pe.peTeamType = EnumToListHelper.GetEnumDescription(EnumTeamType.TeamSalesmen);
                                    pe.pePlaceID  = team.tssr;
                                    pe.peTeam     = team.tsID;

                                    DateTime dtmServerDate = BRHelpers.GetServerDateTime();

                                    TeamLog teamLog     = new TeamLog();
                                    teamLog.tlDT        = dtmServerDate;
                                    teamLog.tlChangedBy = idUser;
                                    teamLog.tlpe        = pe.peID;
                                    teamLog.tlTeamType  = pe.peTeamType;
                                    teamLog.tlPlaceID   = pe.pePlaceID;
                                    teamLog.tlTeam      = pe.peTeam;
                                    dbContext.TeamsLogs.Add(teamLog);
                                    Personnel p = lstAdd.Where(pa => pa.peID == pe.peID).FirstOrDefault();
                                    if (p.pepo != pe.pepo)
                                    {
                                        dbContext.Entry(p).State = EntityState.Modified;

                                        PostLog postLog     = new PostLog();
                                        postLog.ppChangedBy = idUser;
                                        postLog.ppDT        = dtmServerDate;
                                        postLog.pppe        = pe.peID;
                                        postLog.pppo        = p.pepo;
                                        dbContext.PostsLogs.Add(postLog);
                                    }
                                });
                            }
                            #endregion

                            #region del Personnel
                            if (lstDel.Count > 0)
                            {
                                dbContext.Personnels.AsEnumerable().Where(pe => lstDel.Any(pee => pee.peID == pe.peID)).ToList().ForEach(pe =>
                                {
                                    pe.peTeamType = null;
                                    pe.pePlaceID  = null;
                                    pe.peTeam     = null;

                                    DateTime dtmServerDate = BRHelpers.GetServerDateTime();

                                    TeamLog teamLog     = new TeamLog();
                                    teamLog.tlDT        = dtmServerDate;
                                    teamLog.tlChangedBy = idUser;
                                    teamLog.tlpe        = pe.peID;
                                    teamLog.tlTeamType  = pe.peTeamType;
                                    teamLog.tlPlaceID   = pe.pePlaceID;
                                    teamLog.tlTeam      = pe.peTeam;
                                    dbContext.TeamsLogs.Add(teamLog);
                                });
                            }
                            #endregion

                            int nSave = dbContext.SaveChanges();
                            transaction.Commit();
                            return(nSave);
                        }
                        catch
                        {
                            transaction.Rollback();
                            return(0);
                        }
                    }
                }
            });

            return(nRes);
        }
Exemplo n.º 7
0
        /// <summary>
        /// Guarda un Gift y Su Log
        /// </summary>
        /// <param name="gift">Objeto a guardar</param>
        /// <param name="blnUpdate">Truw. Actualiza | False. Inserta</param>
        /// <param name="lstAddLocations">Locaciones a agregar</param>
        /// <param name="lstDelLocations">Locaciones a eliminar</param>
        /// <param name="lstAddAgencies">Agencias a agregar</param>
        /// <param name="lstDelAgencies">Agencias a eliminar</param>
        /// <param name="lstAddGiftPack">Gifts a agregar al paquete</param>
        /// <param name="lstDelGiftPack">Gifts a elimina del paquete</param>
        /// <param name="lstUpdGiftPack">Gift a actualizar en el paquete</param>
        /// <param name="blnIsInventory">True. Guardamos el regalo en todos los almacenes existentes</param>
        /// <param name="userId">usuario que está guardando el gift</param>
        /// <history>
        /// [emoguel] created 20/07/2016
        /// </history>
        /// <returns>-1. Existe un Gift con el mismo nombre| 0. No se guardó. | >0. Se guardó correctamente</returns>
        public async static Task <int> SaveGift(Gift gift, bool blnUpdate, List <Location> lstAddLocations, List <Location> lstDelLocations, List <Agency> lstAddAgencies, List <Agency> lstDelAgencies,
                                                List <GiftPackageItem> lstAddGiftPack, List <GiftPackageItem> lstDelGiftPack, List <GiftPackageItem> lstUpdGiftPack, bool blnIsInventory, string userId)
        {
            return(await Task.Run(() =>
            {
                using (var dbContext = new IMEntities(ConnectionHelper.ConnectionString()))
                {
                    using (var transacction = dbContext.Database.BeginTransaction())
                    {
                        try
                        {
                            int nSave = 0;
                            Gift giftSave = new Gift();
                            #region Update
                            if (blnUpdate)//Actualizar
                            {
                                giftSave = dbContext.Gifts.Where(gi => gi.giID == gift.giID).
                                           Include(gi => gi.Locations).
                                           Include(gi => gi.Agencies).FirstOrDefault();

                                ObjectHelper.CopyProperties(giftSave, gift);
                            }
                            #endregion
                            #region Add
                            else//Add
                            {
                                if (dbContext.Gifts.Where(gi => gi.giID == gift.giID).FirstOrDefault() != null)
                                {
                                    return -1;
                                }
                                else
                                {
                                    int nOrder = dbContext.Gifts.Max(gi => gi.giO) + 1;
                                    gift.giO = nOrder;
                                    dbContext.Gifts.Add(gift);
                                    giftSave = gift;
                                    nSave += dbContext.SaveChanges();
                                }
                            }
                            #endregion

                            #region Locations
                            //Eliminar Locations
                            giftSave.Locations.Where(lo => lstDelLocations.Any(loo => lo.loID == loo.loID)).ToList().ForEach(lo =>
                            {
                                giftSave.Locations.Remove(lo);
                            });


                            //Agregar Locations
                            var addLocations = dbContext.Locations.AsEnumerable().Where(lo => lstAddLocations.Any(loo => loo.loID == lo.loID)).ToList();
                            addLocations.ForEach(lo =>
                            {
                                giftSave.Locations.Add(lo);
                            });
                            #endregion

                            #region Agencies
                            //Eliminar
                            giftSave.Agencies.Where(ag => lstDelAgencies.Any(agg => ag.agID == agg.agID)).ToList().ForEach(ag =>
                            {
                                giftSave.Agencies.Remove(ag);
                            });

                            //Agregar
                            var addAgencies = dbContext.Agencies.AsEnumerable().Where(ag => lstAddAgencies.Any(agg => agg.agID == ag.agID)).ToList();

                            addAgencies.ForEach(ag =>
                            {
                                giftSave.Agencies.Add(ag);
                            });
                            #endregion

                            #region GiftPack
                            if (gift.giPack)
                            {
                                //Eliminar en caso de que ya no se vaya a utilizar
                                if (lstDelGiftPack.Count > 0)
                                {
                                    lstDelGiftPack.ForEach(gp =>
                                    {
                                        gp.GiftItem = null;
                                        dbContext.Entry(gp).State = EntityState.Deleted;
                                    });
                                }

                                //Actualizar en caso de que se haya modificado uno ya existeste
                                if (lstUpdGiftPack.Count > 0)
                                {
                                    lstUpdGiftPack.ForEach(gp =>
                                    {
                                        gp.GiftItem = null;
                                        dbContext.Entry(gp).State = EntityState.Modified;
                                    });
                                }

                                //Agregar Gift Pack Item
                                if (lstAddGiftPack.Count > 0)
                                {
                                    lstAddGiftPack.ForEach(gp =>
                                    {
                                        gp.GiftItem = null;
                                        gp.GiftPackage = null;
                                        gp.gpPack = gift.giID;
                                        dbContext.Entry(gp).State = EntityState.Added;
                                    });
                                }
                            }
                            else if (blnUpdate)
                            {
                                //Eliminar items en caso de que ya no se paquete
                                var lstDelPack = dbContext.GiftsPackagesItems.Where(gp => gp.gpPack == gift.giID).ToList();
                                lstDelPack.ForEach(gp =>
                                {
                                    gp.GiftItem = null;
                                    dbContext.Entry(gp).State = EntityState.Deleted;
                                });
                            }
                            #endregion

                            #region Inventory
                            if (blnIsInventory)
                            {
                                var date = BRHelpers.GetServerDate();
                                var lstWH = dbContext.Warehouses.Select(wh => wh.whID).ToList();
                                lstWH.ForEach(whID =>
                                {
                                    GiftInventory giftInventory = new GiftInventory {
                                        gvgi = gift.giID, gvwh = whID, gvQty = 0, gvD = new DateTime(date.Year, date.Month, date.Day)
                                    };
                                    dbContext.Entry(giftInventory).State = EntityState.Added;
                                });
                            }
                            #endregion

                            nSave += dbContext.SaveChanges();
                            #region GiftLog
                            dbContext.USP_OR_SaveGiftLog(gift.giID, 0, userId);
                            #endregion

                            nSave += dbContext.SaveChanges();
                            transacction.Commit();
                            return nSave;
                        }
                        catch
                        {
                            transacction.Rollback();
                            throw;
                        }
                    }
                }
            }));
        }
Exemplo n.º 8
0
        /// <summary>
        /// Guarda un personnel y todos sus permisos
        /// </summary>
        /// <param name="idUser">id del usuario que está editando el personnel</param>
        /// <param name="personnel">personnel a guardar</param>
        /// <param name="blnUpdate">True. Actualiza | False. inserta</param>
        /// <param name="lstPermissionAdd">Permisos a agregar</param>
        /// <param name="lstPermissionDel">Permisos a eliminar</param>
        /// <param name="lstPermissionUpd">Permisos a actualizar</param>
        /// <param name="lstLeadSourceDel">Leadsource a eliminar</param>
        /// <param name="lstLeadSourceAdd">LeadSource a agregar</param>
        /// <param name="lstWarehouseDel">Warehouses a eliminar</param>
        /// <param name="lstWarehousesAdd">Warehouses a agregar</param>
        /// <param name="lstSalesRoomDel">Salesroom a eliminar</param>
        /// <param name="lstSalesRoomAdd">SalesRoom a agregar</param>
        /// <param name="lstRolesDel">Roles a eliminar</param>
        /// <param name="lstRoleAdd">Roles a agregar</param>
        /// <param name="blnPostLog">Si se modifico el puesto</param>
        /// <param name="blnTeamsLog">Si se cambio de tem</param>
        /// <returns>-1. Existe un registro con el mismo ID | 0. No se guardó | >0. Se guardó correctamente</returns>
        /// <history>
        /// [emoguel] created 22/06/2016
        /// </history>
        public static async Task <int> SavePersonnel(string idUser, Personnel personnel, bool blnUpdate, List <PersonnelPermission> lstPermissionAdd, List <PersonnelPermission> lstPermissionDel, List <PersonnelPermission> lstPermissionUpd,
                                                     List <PersonnelAccess> lstLeadSourceDel, List <PersonnelAccess> lstLeadSourceAdd, List <PersonnelAccess> lstWarehouseDel, List <PersonnelAccess> lstWarehousesAdd, List <PersonnelAccess> lstSalesRoomDel,
                                                     List <PersonnelAccess> lstSalesRoomAdd, List <Role> lstRoleDel, List <Role> lstRoleAdd, bool blnPostLog, bool blnTeamsLog, bool blnSaveLog, List <string> lstRolesLog, bool blnLocation, List <string> lsLeadSourcesLog, List <string> lstSalesRoomLog)
        {
            int nRes = await Task.Run(() =>
            {
                using (var dbContext = new IMEntities(ConnectionHelper.ConnectionString()))
                {
                    using (var transacction = dbContext.Database.BeginTransaction(System.Data.IsolationLevel.Serializable))
                    {
                        try
                        {
                            int nSave = 0;
                            Personnel personnelSave = new Personnel();
                            #region Personnel
                            if (blnUpdate)//Actualizar
                            {
                                personnelSave = dbContext.Personnels.Where(pe => pe.peID == personnel.peID).Include(pe => pe.Roles).FirstOrDefault();
                                //dbContext.Entry(personnel).State = EntityState.Modified;
                                ObjectHelper.CopyProperties(personnelSave, personnel);
                            }
                            else//Agregar
                            {
                                if (dbContext.Personnels.Where(pe => pe.peID == personnel.peID).FirstOrDefault() != null)
                                {
                                    return(-1);
                                }
                                else
                                {
                                    dbContext.Personnels.Add(personnel);
                                    personnelSave = personnel;
                                }
                            }
                            #endregion

                            #region PersonnelPermission
                            //Eliminar
                            lstPermissionDel.ForEach(pp =>
                            {
                                dbContext.Entry(pp).State = EntityState.Deleted;
                            });

                            //Add
                            lstPermissionAdd.ForEach(pp =>
                            {
                                pp.pppe = personnelSave.peID;
                                dbContext.Entry(pp).State = EntityState.Added;
                            });

                            //update
                            lstPermissionUpd.ForEach(pp =>
                            {
                                pp.pppe = personnelSave.peID;
                                dbContext.Entry(pp).State = EntityState.Modified;
                            });
                            #endregion

                            #region Roles
                            //Del
                            personnelSave.Roles.Where(ro => lstRoleDel.Any(roo => ro.roID == roo.roID)).ToList().ForEach(ro =>
                            {
                                personnelSave.Roles.Remove(ro);
                            });

                            //Add
                            lstRoleAdd = dbContext.Roles.AsEnumerable().Where(ro => lstRoleAdd.Any(roo => ro.roID == roo.roID)).ToList();
                            lstRoleAdd.ForEach(ro =>
                            {
                                personnelSave.Roles.Add(ro);
                            });
                            #endregion

                            #region leadSource
                            //Eliminar
                            lstLeadSourceDel.ForEach(pl =>
                            {
                                pl.plpe   = personnelSave.peID;
                                pl.plLSSR = "LS";
                                dbContext.Entry(pl).State = EntityState.Deleted;
                            });

                            //Del
                            lstLeadSourceAdd.ForEach(pl =>
                            {
                                pl.plpe   = personnelSave.peID;
                                pl.plLSSR = "LS";
                                dbContext.PersonnelAccessList.Add(pl);
                            });
                            #endregion

                            #region SalesRoom
                            //Del
                            lstSalesRoomDel.ForEach(pl =>
                            {
                                pl.plpe   = personnelSave.peID;
                                pl.plLSSR = "SR";
                                dbContext.Entry(pl).State = EntityState.Deleted;
                            });

                            //Add
                            lstSalesRoomAdd.ForEach(pl =>
                            {
                                pl.plpe   = personnelSave.peID;
                                pl.plLSSR = "SR";
                                dbContext.PersonnelAccessList.Add(pl);
                            });
                            #endregion

                            #region Warehouses
                            //Del
                            lstWarehouseDel.ForEach(pl =>
                            {
                                pl.plpe   = personnelSave.peID;
                                pl.plLSSR = "WH";
                                dbContext.Entry(pl).State = EntityState.Deleted;
                            });

                            //Add
                            lstWarehousesAdd.ForEach(pl =>
                            {
                                pl.plpe   = personnelSave.peID;
                                pl.plLSSR = "WH";
                                dbContext.PersonnelAccessList.Add(pl);
                            });
                            #endregion

                            DateTime dtmServerDate = BRHelpers.GetServerDateTime();

                            #region postLog
                            if (blnPostLog)
                            {
                                PostLog postLog     = new PostLog();
                                postLog.ppChangedBy = idUser;
                                postLog.ppDT        = dtmServerDate;
                                postLog.pppe        = personnel.peID;
                                postLog.pppo        = personnel.pepo;
                                dbContext.PostsLogs.Add(postLog);
                            }
                            #endregion

                            #region TeamsLog
                            if (blnTeamsLog)
                            {
                                TeamLog teamLog     = new TeamLog();
                                teamLog.tlDT        = dtmServerDate;
                                teamLog.tlChangedBy = idUser;
                                teamLog.tlpe        = personnel.peID;
                                teamLog.tlTeamType  = (personnel.peTeamType == "") ? null : personnel.peTeamType;
                                teamLog.tlPlaceID   = personnel.pePlaceID;
                                teamLog.tlTeam      = personnel.peTeam;
                                dbContext.TeamsLogs.Add(teamLog);
                            }
                            #endregion

                            #region PersonnelLog
                            if (blnSaveLog)
                            {
                                PersonnelLog personnelLog = new PersonnelLog {
                                    plgpe = personnel.peID, plgDT = dtmServerDate, plgChangedBy = idUser, plgde = personnel.pede, plgpo = personnel.pepo, plglo = (blnLocation) ? personnel.pePlaceID : null, plgsr = (!blnLocation) ? personnel.pePlaceID : null
                                };
                                dbContext.PersonnelLogs.Add(personnelLog);
                                nSave = dbContext.SaveChanges();
                                #region Roles
                                //Roles a ligar al log
                                var lstRolesSave = dbContext.Roles.Where(ro => lstRolesLog.Contains(ro.roID)).ToList();
                                lstRolesSave.ForEach(ro => personnelLog.Roles.Add(ro));
                                #endregion

                                #region LeadSources
                                //leadSource a ligar al log
                                List <LeadSource> lstLS = dbContext.LeadSources.Where(ls => lsLeadSourcesLog.Contains(ls.lsID)).ToList();
                                lstLS.ForEach(ls => personnelLog.LeadSources.Add(ls));
                                #endregion

                                #region SalesRoom
                                //SalesRooms a ligar al log
                                List <SalesRoom> lstSr = dbContext.SalesRooms.Where(sr => lstSalesRoomLog.Contains(sr.srID)).ToList();
                                lstSr.ForEach(sr => personnelLog.SalesRooms.Add(sr));
                                #endregion
                            }
                            #endregion

                            nSave += dbContext.SaveChanges();
                            transacction.Commit();
                            return(nSave);
                        }
                        catch
                        {
                            transacction.Rollback();
                            throw;
                        }
                    }
                }
            });

            return(nRes);
        }