Ejemplo n.º 1
0
        /// <summary>
        /// Valida que un objeto TeamLog cumpla con los filtros actuales
        /// </summary>
        /// <param name="teamLog">Objeto a validar</param>
        /// <returns>True. Si cumple | False. No cumple</returns>
        private bool ValidateFilter(TeamLog teamLog)
        {
            if (_blnDate)//Filtro por fecha
            {
                if (teamLog.tlDT.Date != _teamLogFilter.tlDT.Date)
                {
                    return(false);
                }
            }

            if (!string.IsNullOrWhiteSpace(_teamLogFilter.tlChangedBy))//Filtro por ChangedBY
            {
                if (teamLog.tlChangedBy != _teamLogFilter.tlChangedBy)
                {
                    return(false);
                }
            }

            if (!string.IsNullOrWhiteSpace(_teamLogFilter.tlpe))//Filtro por Personel
            {
                if (teamLog.tlpe != _teamLogFilter.tlpe)
                {
                    return(false);
                }
            }
            return(true);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Actualiza los registros del grid
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        /// <history>
        /// [emoguel] created 27/04/2016
        /// </history>
        private void btnRef_Click(object sender, RoutedEventArgs e)
        {
            object  selectedItem = dgrTeamsLog.SelectedItem;
            TeamLog teamLog      = (TeamLog)selectedItem.GetType().GetProperty("teamLog").GetValue(selectedItem, null);

            LoadTeamsLog(teamLog);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Llena el grid de Teams Log
        /// </summary>
        /// <param name="teamLog">Objeto a selecionar</param>
        /// <history>
        /// [emoguel] created 26/04/2016
        /// </history>
        private async void LoadTeamsLog(TeamLog teamLog = null)
        {
            try
            {
                status.Visibility = Visibility.Visible;
                int nIndex = 0;
                var teams  = await BRTeamsLog.GetTeamsLog(_teamLogFilter, _blnDate);

                List <object> lstTeamsLog = teams.ToList();
                dgrTeamsLog.ItemsSource = lstTeamsLog;
                if (lstTeamsLog.Count() > 0)
                {
                    if (teamLog != null)
                    {
                        dynamic dTeamLog = lstTeamsLog.Where(item => Convert.ToUInt32(item.GetType().GetProperty("tlID").GetValue(item, null)) == teamLog.tlID).FirstOrDefault();
                        nIndex = lstTeamsLog.IndexOf(dTeamLog);
                    }
                    GridHelper.SelectRow(dgrTeamsLog, nIndex);
                    btnDel.IsEnabled = _blnDel;
                }
                else
                {
                    btnDel.IsEnabled = false;
                }
                StatusBarReg.Content = lstTeamsLog.Count() + " Teams Log.";
                status.Visibility    = Visibility.Collapsed;
            }
            catch (Exception ex)
            {
                UIHelper.ShowMessage(ex);
            }
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Muestra la ventana detalle en modo edit
        /// </summary>
        /// <history>
        /// [emoguel] 27/04/2016 Created
        /// </history>
        private void Cell_DoubleClick(object sender, RoutedEventArgs e)
        {
            object           dTeamLog         = dgrTeamsLog.SelectedItem;
            TeamLog          teamLog          = (TeamLog)dTeamLog.GetType().GetProperty("teamLog").GetValue(dTeamLog, null);
            frmTeamLogDetail frmTeamLogDetail = new frmTeamLogDetail();

            frmTeamLogDetail.Owner      = this;
            frmTeamLogDetail.oldTeamLog = teamLog;
            frmTeamLogDetail.enumMode   = (_blnEdit) ? EnumMode.Edit : EnumMode.ReadOnly;
            if (frmTeamLogDetail.ShowDialog() == true)
            {
                List <object> lstTeamsLog = (List <object>)dgrTeamsLog.ItemsSource;
                int           nIndex      = 0;
                if (ValidateFilter(frmTeamLogDetail.teamLog))
                {
                    ObjectHelper.CopyProperties(teamLog, frmTeamLogDetail.teamLog);                                                                                                                             //Actualizamos los datos
                    lstTeamsLog.Sort((x, y) => DateTime.Compare(Convert.ToDateTime(y.GetType().GetProperty("tlDT").GetValue(y, null)), Convert.ToDateTime(x.GetType().GetProperty("tlDT").GetValue(x, null)))); //Reordenamos la lista
                    nIndex = lstTeamsLog.IndexOf(dTeamLog);                                                                                                                                                     //Buscamos la posición del registro
                }
                else
                {
                    lstTeamsLog.Remove(dTeamLog);                         //Quitamos el registro
                }
                dgrTeamsLog.Items.Refresh();                              //Actualizamos la vista
                GridHelper.SelectRow(dgrTeamsLog, nIndex);                //Seleccionamos el registro
                StatusBarReg.Content = lstTeamsLog.Count + " Teams Log."; //Actualizamos el contador
            }
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Obtiene registros del catalog TeamsLog
        /// </summary>
        /// <param name="teamLog">Objeto con filtros adicionales</param>
        /// <returns>Lista tipo Dynamic</returns>
        /// <history>
        /// [emoguel] created 27/04/2016
        /// [emoguel] mofified 28/06/2016---->Se volvió async
        /// </history>
        public async static Task <IEnumerable <object> > GetTeamsLog(TeamLog teamLog = null, bool blnDate = false)
        {
            return(await Task.Run(() =>
            {
                using (var dbContext = new IMEntities(ConnectionHelper.ConnectionString()))
                {
                    var query = from tl in dbContext.TeamsLogs
                                from pc in dbContext.Personnels.Where(pc => pc.peID == tl.tlChangedBy).DefaultIfEmpty()
                                from pe in dbContext.Personnels.Where(pe => pe.peID == tl.tlpe).DefaultIfEmpty()
                                from tt in dbContext.TeamsTypes.Where(tt => tt.ttID == tl.tlTeamType).DefaultIfEmpty()
                                from sr in dbContext.SalesRooms.Where(sr => sr.srID == tl.tlPlaceID).DefaultIfEmpty()
                                from ts in dbContext.TeamsSalesmen.Where(ts => ts.tsID == tl.tlTeam && ts.tssr == sr.srID).DefaultIfEmpty()
                                from lo in dbContext.Locations.Where(lo => lo.loID == tl.tlPlaceID).DefaultIfEmpty()
                                from tg in dbContext.TeamsGuestServices.Where(tg => tg.tgID == tl.tlTeam && tg.tglo == lo.loID).DefaultIfEmpty()
                                select new
                    {
                        tlID = tl.tlID,
                        tlDT = tl.tlDT,
                        teamLog = tl,
                        changedBy = pc.peN,
                        personel = pe.peN,
                        teamType = tt.ttN,
                        placeType = (tl.tlTeamType == "GS") ? "Location" : ((tl.tlTeamType == "SA") ? "Sales Room" : ""),
                        place = (tl.tlTeamType == "GS") ? lo.loN : ((tl.tlTeamType == "SA") ? sr.srN : ""),
                        team = (tl.tlTeamType == "GS") ? tg.tgN : ((tl.tlTeamType == "SA") ? ts.tsN : ""),
                    };

                    if (teamLog != null)
                    {
                        if (teamLog.tlID > 0)//Filtro por ID
                        {
                            query = query.Where(tl => tl.tlID == teamLog.tlID);
                        }
                        if (blnDate)//Filtro por Fecha
                        {
                            query = query.Where(tl => DbFunctions.TruncateTime(tl.teamLog.tlDT).Value == DbFunctions.TruncateTime(teamLog.tlDT));
                        }

                        if (!string.IsNullOrWhiteSpace(teamLog.tlChangedBy))//Filtro por changedBy
                        {
                            query = query.Where(tl => tl.teamLog.tlChangedBy == teamLog.tlChangedBy);
                        }

                        if (!string.IsNullOrWhiteSpace(teamLog.tlpe))//Filtro por Perssonel
                        {
                            query = query.Where(tl => tl.teamLog.tlpe == teamLog.tlpe);
                        }
                    }
                    return query.OrderByDescending(tl => tl.teamLog.tlDT).ToList();
                }
            }));
        }
Ejemplo n.º 6
0
        /// <summary>
        /// Abre la ventana de busqueda en modo search
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        /// <history>
        /// [emoguel] created 27/04/2016
        /// </history>
        private void btnSearch_Click(object sender, RoutedEventArgs e)
        {
            frmTeamLogDetail frmTeamLogDetail = new frmTeamLogDetail();

            frmTeamLogDetail.Owner      = this;
            frmTeamLogDetail.enumMode   = EnumMode.Search;
            frmTeamLogDetail.oldTeamLog = _teamLogFilter;
            frmTeamLogDetail.blnDate    = _blnDate;
            if (frmTeamLogDetail.ShowDialog() == true)
            {
                _teamLogFilter = frmTeamLogDetail.teamLog;
                _blnDate       = frmTeamLogDetail.blnDate;
                LoadTeamsLog();
            }
        }
Ejemplo n.º 7
0
        /// <summary>
        /// Abre la ventana detalle en modo Add
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        /// <history>
        /// [emoguel] created 27/04/2016
        /// </history>
        private async void btnAdd_Click(object sender, RoutedEventArgs e)
        {
            frmTeamLogDetail frmTeamLogDetail = new frmTeamLogDetail();

            frmTeamLogDetail.Owner    = this;
            frmTeamLogDetail.enumMode = EnumMode.Add;
            if (frmTeamLogDetail.ShowDialog() == true)
            {
                TeamLog teamLog = frmTeamLogDetail.teamLog;
                if (ValidateFilter(teamLog))//Validamos que cumpla con los filtros actuales
                {
                    var team = await BRTeamsLog.GetTeamsLog(teamLog);

                    object        dTeamLog    = team.FirstOrDefault();                                                                                                                                          //Obtenemos el registro nuevo
                    List <object> lstTeamsLog = (List <object>)dgrTeamsLog.ItemsSource;
                    lstTeamsLog.Add(dTeamLog);                                                                                                                                                                  //Agregamos el registro
                    lstTeamsLog.Sort((x, y) => DateTime.Compare(Convert.ToDateTime(y.GetType().GetProperty("tlDT").GetValue(y, null)), Convert.ToDateTime(x.GetType().GetProperty("tlDT").GetValue(x, null)))); //Reordenamos la lista
                    int nIndex = lstTeamsLog.IndexOf(dTeamLog);                                                                                                                                                 //Obtenemos la posición del registro
                    dgrTeamsLog.Items.Refresh();                                                                                                                                                                //Actualizamos la vista
                    GridHelper.SelectRow(dgrTeamsLog, nIndex);                                                                                                                                                  //Seleccionamos el registro
                    StatusBarReg.Content = lstTeamsLog.Count + " Teams Log.";                                                                                                                                   //Actualizamos el contador
                }
            }
        }
Ejemplo n.º 8
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);
        }
        public async Task <HttpResponseMessage> MediaUpload(string TeamId, string matchid)
        {
            //// Check if the request contains multipart/form-data.
            //if (!Request.Content.IsMimeMultipartContent())
            //{
            //    throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);
            //}

            //var provider = await Request.Content.ReadAsMultipartAsync<InMemoryMultipartFormDataStreamProvider>(new InMemoryMultipartFormDataStreamProvider());
            ////access form data
            //NameValueCollection formData = provider.FormData;
            ////access files
            //IList<HttpContent> files = provider.Files;

            //HttpContent file1 = files[0];
            //var thisFileName = file1.Headers.ContentDisposition.FileName.Trim('\"');

            //string filename = String.Empty;
            //Stream input = await file1.ReadAsStreamAsync();
            //string directoryName = String.Empty;
            //string URL = String.Empty;
            //string tempDocUrl = WebConfigurationManager.AppSettings["DocsUrl"];

            //var path = HttpRuntime.AppDomainAppPath;
            //directoryName = System.IO.Path.Combine(path, "ClientDocument");
            //filename = System.IO.Path.Combine(directoryName, thisFileName);

            ////Deletion exists file
            //if (File.Exists(filename))
            //{
            //    File.Delete(filename);
            //}

            //string DocsPath = tempDocUrl + "/" + "ClientDocument" + "/";
            //URL = DocsPath + thisFileName;

            ////Directory.CreateDirectory(@directoryName);
            //using (Stream file = File.OpenWrite(filename))
            //{
            //    input.CopyTo(file);
            //    //close file
            //    file.Close();
            //}

            //var response = Request.CreateResponse(HttpStatusCode.OK);
            //response.Headers.Add("DocsUrl", URL);
            //return response;

            Dictionary <string, object> dict = new Dictionary <string, object>();

            try
            {
                var httpRequest = HttpContext.Current.Request;
                foreach (string file in httpRequest.Files)
                {
                    HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.Created);
                    var postedFile = httpRequest.Files[file];
                    if (postedFile != null && postedFile.ContentLength > 0)
                    {
                        int            MaxContentLength      = 1024 * 1024 * 1; //Size = 1 MB
                        IList <string> AllowedFileExtensions = new List <string> {
                            ".jpg", ".gif", ".png"
                        };
                        var ext = postedFile.FileName.Substring(postedFile.FileName.LastIndexOf('.'));
                        var originalFilename = Path.GetFileName(postedFile.FileName);
                        var extension        = ext.ToLower();
                        if (!AllowedFileExtensions.Contains(extension))
                        {
                            var message = string.Format("Please Upload image of type .jpg,.gif,.png.");
                            dict.Add("error", message);
                            return(Request.CreateResponse(HttpStatusCode.BadRequest, dict));
                        }
                        else if (postedFile.ContentLength > MaxContentLength)
                        {
                            var message = string.Format("Please Upload a file upto 1 mb.");
                            dict.Add("error", message);
                            return(Request.CreateResponse(HttpStatusCode.BadRequest, dict));
                        }
                        else
                        {
                            string fileId = Guid.NewGuid().ToString().Replace("-", "");
                            //if needed write the code to update the table
                            var filePath = HttpContext.Current.Server.MapPath("~/ClientDocument/" + fileId + originalFilename);
                            postedFile.SaveAs(filePath);

                            TeamLog teamlogo = new TeamLog()
                            {
                                TeamId   = Convert.ToInt32(TeamId),
                                MatchId  = Convert.ToInt32(matchid),
                                TeamLogs = Convert.ToString("http://idtp285/ClientDocument/" + fileId + originalFilename)
                            };
                            dbcontext.TeamLogs.Add(teamlogo);
                            dbcontext.SaveChanges();
                        }
                    }
                    var message1 = string.Format("Image Updated Successfully.");
                    return(Request.CreateErrorResponse(HttpStatusCode.Created, message1));;
                }
                var res = string.Format("Please Upload a image.");
                dict.Add("error", res);
                return(Request.CreateResponse(HttpStatusCode.NotFound, dict));
            }
            catch (Exception ex)
            {
                var res = string.Format("some Message");
                dict.Add("error", res);
                return(Request.CreateResponse(HttpStatusCode.NotFound, dict));
            }
        }
Ejemplo n.º 10
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);
        }
Ejemplo n.º 11
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);
        }