コード例 #1
0
        /// <summary>
        ///     Include in the view model only the properties you want to update. After the MVC model linker is finished,
        ///     copy the properties of the view model into the entity instance and use the tool as an automapper.
        /// </summary>
        /// <param name="registrationViewModel"></param>
        /// <returns>True all good, False something goes wrong </returns>
        public bool CreatePeople(RegistrationViewModel registrationViewModel)
        {
            _database = new dbSIACEntities();
            var peopleCount = _database.people.Count();

            using (_database)
            {
                var newPeople = new people
                {
                    creationDate = DateTime.Now,
                    address      = registrationViewModel.address,
                    dni          = registrationViewModel.dni,
                    name         = registrationViewModel.name,
                    lastname     = registrationViewModel.lastname,
                    email        = registrationViewModel.email,
                    pass         = Encrypt.GetSHA256(registrationViewModel.pass),
                    idRol        = registrationViewModel.idRol,
                    isActive     = 1
                };
                _database.people.Add(newPeople);
                _database.SaveChanges();

                if (peopleCount == _database.people.Count())
                {
                    return(false);
                }
                return(true);
            }
        }
コード例 #2
0
        public TicketViewModel GeTicketViewModel(int ticketIdLocal)
        {
            _database = new dbSIACEntities();
            var ticketViewModel = new TicketViewModel();

            using (_database)
            {
                var ticket = _database.ticket.FirstOrDefault(currentTicket => currentTicket.idLocal == ticketIdLocal);
                if (ticket == null)
                {
                    return(null);
                }
                if (ticket.idClient != null)
                {
                    ticketViewModel.idClient = (int)ticket.idClient;
                }
                ticketViewModel.idAssignedTechnician = ticket.idAssignedTechnician;
                ticketViewModel.creationDate         = ticket.creationDate;
                ticketViewModel.estimatedFinishDate  = ticket.estimatedFinishDate;
                ticketViewModel.idPriority           = ticket.idPriority;
                ticketViewModel.idCategory           = ticket.idCategory;
                ticketViewModel.idStatus             = ticket.idStatus;
                ticketViewModel.creationDate         = ticket.creationDate;
                ticketViewModel.description          = ticket.description;
            }

            _database.Dispose();
            return(ticketViewModel);
        }
コード例 #3
0
        /// <summary>
        /// </summary>
        /// <param name="IquerableTickets"></param>
        /// <returns></returns>
        private IEnumerable <TicketPrintableModel> _IQuerablePrintableModels(IEnumerable <ticket> IquerableTickets)
        {
            _database = new dbSIACEntities();

            var iqTicketPrintableModel = (from tick in IquerableTickets
                                          join creator in _database.people on tick.idCreatorPeople equals creator.id
                                          join clientAddress in _database.people on tick.idClient equals clientAddress.id
                                          join technician in _database.people on tick.idAssignedTechnician equals technician.id
                                          select new TicketPrintableModel
            {
                idLocal = tick.idLocal,
                address = clientAddress.address,
                assignedTechnician = technician.name,
                assignedTechnicianLastname = technician.lastname,
                client = clientAddress.name,
                clientLastname = clientAddress.lastname,
                CreationDateTime = tick.creationDate,
                creatorPeople = creator.name,
                creatorPeopleLastname = creator.lastname,
                description = tick.description,
                email = clientAddress.email,
                status = tick.idStatus
            }).OrderByDescending(x => x.CreationDateTime);

            return(iqTicketPrintableModel);
        }
コード例 #4
0
        /// <summary>
        /// </summary>
        /// <param name="idRol"></param>
        /// <param name="userId"></param>
        /// <returns>IQueryable&lt;ticket&gt;</returns>
        private IEnumerable <ticket> _filterTicketsByRolAndId(int idRol, int userId)
        {
            _database = new dbSIACEntities();

            IQueryable <ticket> smallFilterTickets = null;

            switch (idRol)
            {
            case (int)ERols.Technician:
            {
                smallFilterTickets = _database.ticket.Where(ticket => ticket.idAssignedTechnician == userId);
                break;
            }

            case (int)ERols.Client:
            {
                smallFilterTickets = _database.ticket.Where(ticket => ticket.idClient == userId);
                break;
            }

            case (int)ERols.TechnicianLead:
            {
                smallFilterTickets = _database.ticket;
                break;
            }
            }

            return(smallFilterTickets.AsEnumerable());
        }
コード例 #5
0
        public bool EditTicket(TicketViewModel baseTicket, string ticketId)
        {
            if (!int.TryParse(ticketId, out var currentTicketId))
            {
                return(false);
            }

            _database = new dbSIACEntities();
            using (_database)
            {
                var result = _database.ticket.FirstOrDefault(b => b.idLocal == currentTicketId);
                if (result == null)
                {
                    _database.Dispose();
                    return(false);
                }

                result.idCategory           = baseTicket.idCategory;
                result.idAssignedTechnician = baseTicket.idAssignedTechnician;
                result.idPriority           = baseTicket.idPriority;
                result.idStatus             = baseTicket.idStatus;
                result.description          = baseTicket.description;
                _database.SaveChanges();
            }

            return(true);
        }
コード例 #6
0
        public bool UpdateTicketStatus(int idStatus, int ticketId)
        {
            if (ticketId <= 0)
            {
                return(false);
            }

            _database = new dbSIACEntities();
            using (_database)
            {
                var ticketDefault = _database.ticket.FirstOrDefault(ticket => ticket.id == ticketId);
                if (ticketDefault == null)
                {
                    return(false);
                }

                ticketDefault.idStatus    = idStatus;
                ticketDefault.editionDate = DateTime.Now;
                try
                {
                    _database.ticket.AddOrUpdate(ticketDefault);
                    _database.SaveChanges();
                }
                catch (Exception)
                {
                    return(false);
                }

                return(true);
            }
        }
コード例 #7
0
        public bool UpdateTicket(TicketHistoryViewModel baseTicket, string ticketIdLocal)
        {
            var entityTicketId = _searchQueriesService.SearchTicketId(ticketIdLocal);

            if (!UpdateTicketStatus(baseTicket.idStatus, entityTicketId))
            {
                return(false);
            }

            _database = new dbSIACEntities();
            var updateTicket = new ticketHistory
            {
                date     = DateTime.Now,
                idPeople = baseTicket.idPeople,
                idStatus = baseTicket.idStatus,
                idTicket = entityTicketId,
                note     = baseTicket.note
            };

            try
            {
                using (_database)
                {
                    _database.ticketHistory.Add(updateTicket);
                    _database.SaveChanges();
                }
            }
            catch (Exception)
            {
                return(false);
            }

            return(true);
        }
コード例 #8
0
        public List <SelectListItem> GetListOfStatus()
        {
            _database = new dbSIACEntities();
            List <StatusViewModel> listOfStatus = null;

            using (_database)
            {
                listOfStatus = (from status in _database.status
                                select new StatusViewModel
                {
                    keyStatus = status.id,
                    valueStatus = status.name
                }
                                ).ToList();
            }

            var statusList = listOfStatus.ConvertAll(data => new SelectListItem
            {
                Text     = data.valueStatus,
                Value    = data.keyStatus.ToString(),
                Selected = false
            });

            _database.Dispose();
            return(statusList);
        }
コード例 #9
0
        public List <SelectListItem> GetListOfPriorities()
        {
            _database = new dbSIACEntities();
            List <PriorityViewModel> listOfPriorities = null;

            using (_database)
            {
                listOfPriorities = (from priority in _database.priority
                                    select new PriorityViewModel
                {
                    keyPriority = priority.id,
                    valuePriority = priority.name
                }
                                    ).ToList();
            }

            var prioritiesList = listOfPriorities.ConvertAll(data => new SelectListItem
            {
                Text     = data.valuePriority,
                Value    = data.keyPriority.ToString(),
                Selected = false
            });

            _database.Dispose();
            return(prioritiesList);
        }
コード例 #10
0
        /// <summary>
        ///     Use idRol and userId to reduce the number of records in the database.
        ///     Then, search within that list, comparing idLocal and possible hits even if it is not a complete word.
        /// </summary>
        /// <param name="stringToSearch"></param>
        /// <param name="idRol"></param>
        /// <param name="userId"></param>
        /// <returns>List&lt;TicketPrintableModel&gt;</returns>
        public List <TicketPrintableModel> SearchTicket(string stringToSearch, int idRol, int userId)
        {
            if (stringToSearch.IsNullOrWhiteSpace())
            {
                return(null);
            }
            var toSearch = stringToSearch.Trim().ToLower();

            var smallFilterTickets = _filterTicketsByRolAndId(idRol, userId);
            var filteredTickets    = _IQuerablePrintableModels(smallFilterTickets);

            _database = new dbSIACEntities();
            using (_database)
            {
                if (int.TryParse(toSearch, out var toSearchInt))
                {
                    var foundedTicketbyId =
                        filteredTickets.Where(currentTicket => currentTicket.idLocal.Equals(toSearchInt));
                    var founderdList = foundedTicketbyId.ToList();
                    if (founderdList.Any())
                    {
                        return(founderdList);
                    }
                }

                filteredTickets = filteredTickets.Where(currentTicket =>
                                                        currentTicket.assignedTechnician.ToLower().Contains(toSearch) ||
                                                        currentTicket.assignedTechnicianLastname.ToLower().Contains(toSearch) ||
                                                        currentTicket.client.ToLower().Contains(toSearch) ||
                                                        currentTicket.clientLastname.ToLower().Contains(toSearch) ||
                                                        currentTicket.address.ToLower().Contains(toSearch) ||
                                                        currentTicket.description.ToLower().Contains(toSearch));
                return(filteredTickets.ToList());
            }
        }
コード例 #11
0
        public List <SelectListItem> GetListOfRols()
        {
            _database = new dbSIACEntities();
            List <RolsViewModel> listOfRols = null;

            using (_database)
            {
                listOfRols = (from rol in _database.rol
                              select new RolsViewModel
                {
                    keyRols = rol.id,
                    valueRols = rol.name
                }
                              ).ToList();
            }

            var rolList = listOfRols.ConvertAll(data => new SelectListItem
            {
                Text     = data.valueRols,
                Value    = data.keyRols.ToString(),
                Selected = false
            });

            _database.Dispose();
            return(rolList);
        }
コード例 #12
0
 /// <summary>
 ///     Shortcut to get the real id of a ticket according to its localID.
 /// </summary>
 /// <param name="ticketIdLocal"></param>
 /// <returns></returns>
 public int SearchTicketId(string ticketIdLocal)
 {
     if (!int.TryParse(ticketIdLocal, out var localTicketId))
     {
         return(0);
     }
     _database = new dbSIACEntities();
     using (_database)
     {
         var entityTicketId = _database.ticket.FirstOrDefault(current => current.idLocal == localTicketId);
         return(entityTicketId?.id != null ? entityTicketId.id : 0); //demasiado comprimido?
     }
 }
コード例 #13
0
 /// <summary>
 ///     Search email
 /// </summary>
 /// <param name="id"></param>
 /// <returns></returns>
 public string SearchEmailPeople(int id)
 {
     if (id <= 0)
     {
         return(null);
     }
     _database = new dbSIACEntities();
     using (_database)
     {
         var email = _database.people.Find(id)?.email;
         return(email);
     }
 }
コード例 #14
0
        /// <summary>
        ///     Get a user by email and password in the database.
        /// </summary>
        /// <param name="email">Email</param>
        /// <param name="password">Password</param>
        /// <returns>object person or null depending if email and password match with a active User</returns>
        public people SearchPeople(string email, string password)
        {
            _database = new dbSIACEntities();
            people activePerson = null;
            var    truePassword = Encrypt.GetSHA256(password.Trim());

            using (_database)
            {
                var objPeople =
                    _database.people.FirstOrDefault(e => e.email == email.Trim() && e.pass == truePassword);

                activePerson = objPeople;
            }

            return(activePerson);
        }
コード例 #15
0
        /// <summary>
        ///     Create a new ticket, if a client is the creator idClient is taken from the sessionUser info. Othewise from the
        ///     ViewModel.
        /// </summary>
        /// <param name="baseTicket"></param>
        /// <param name="sessionUser"></param>
        /// <returns>True ticket created. False something went wrong</returns>
        public (bool result, int idLocal) CreateTicket(TicketViewModel baseTicket, people sessionUser)
        {
            var random = new Random();

            baseTicket.idLocal = random.Next(1000, 99999); //Algun dia llegara a mas de esa cantidad de tickets?

            _database = new dbSIACEntities();
            if (baseTicket.idClient == 0)
            {
                baseTicket.idClient = sessionUser.id;
            }
            if (baseTicket.idAssignedTechnician == null)
            {
                baseTicket.idAssignedTechnician = 1;
            }

            var ticket = new ticket
            {
                idLocal              = baseTicket.idLocal,
                idStatus             = baseTicket.idStatus,
                idCreatorPeople      = sessionUser.id,
                creationDate         = baseTicket.creationDate,
                estimatedFinishDate  = baseTicket.estimatedFinishDate,
                idPriority           = baseTicket.idPriority,
                idCategory           = baseTicket.idCategory,
                description          = baseTicket.description,
                idClient             = baseTicket.idClient,
                idAssignedTechnician = baseTicket.idAssignedTechnician
            };

            try
            {
                using (_database)
                {
                    _database.ticket.Add(ticket);
                    _database.SaveChanges();
                }

                return(true, baseTicket.idLocal);
            }
            catch (Exception)
            {
                return(false, 0);
            }
        }
コード例 #16
0
        public static bool IsAuthonized(int idOperation = 0)
        {
            _database = new dbSIACEntities();
            using (_database)
            {
                var people = (people)HttpContext.Current.Session["User"];
                if (people == null)
                {
                    return(false);
                }
                var userOperations =
                    _database.rolOperations.Where(m => m.idRol == people.idRol && m.idOperations == idOperation);
                if (userOperations.ToList().Count < 1)
                {
                    return(false);
                }

                return(true);
            }
        }
コード例 #17
0
        public PeopleViewModel GetDetailsPeople(int peopleId)
        {
            _database = new dbSIACEntities();
            PeopleViewModel searchPeople = null;

            using (_database)
            {
                var currentPeople = _database.people.FirstOrDefault(current => current.id == peopleId);
                searchPeople = new PeopleViewModel
                {
                    addressClient  = currentPeople.address,
                    keyClient      = currentPeople.id,
                    lastNameClient = currentPeople.lastname,
                    nameClient     = currentPeople.name
                };
            }


            return(searchPeople);
        }
コード例 #18
0
        public override void OnAuthorization(AuthorizationContext filterContext)
        {
            _database = new dbSIACEntities();
            using (_database)
            {
                _people = (people)HttpContext.Current.Session["User"];
                var userOperations =
                    _database.rolOperations.Where(m => m.idRol == _people.idRol && m.idOperations == _idOperation);

                if (userOperations == null || userOperations.ToList().Count < 1)
                {
                    var operation     = _database.operations.Find(_idOperation);
                    var idModule      = operation.idModule;
                    var nameOperation = getOperationName(_idOperation);
                    var nameModule    = getModuleName(idModule);
                    filterContext.Result =
                        new RedirectResult("~/Error/UnauthorizedOperation?operation=" + nameOperation +
                                           nameModule + "&msjeErrorExcepcion=");
                }
            }
        }
コード例 #19
0
        /// <summary>
        ///     Find the ticket that has the same idLocal assigned to it.
        ///     Respecting that the user who performs the search is the creator, the client or the assigned technician.
        /// </summary>
        /// <param name="ticketIdLocal"></param>
        /// <param name="idRol"></param>
        /// <param name="userId"></param>
        /// <returns name="TicketPrintableModel"></returns>
        public TicketPrintableModel SearchTicketByIdAndUser(int ticketIdLocal, int idRol, int userId)
        {
            if (ticketIdLocal <= 0)
            {
                return(null);
            }
            var smallFilterTickets = _filterTicketsByRolAndId(idRol, userId);

            _database = new dbSIACEntities();
            using (_database)
            {
                if (smallFilterTickets.FirstOrDefault(currentTicket => currentTicket.idLocal == ticketIdLocal) !=
                    null)
                {
                    var foundTickets = (from ticket in smallFilterTickets
                                        where ticket.idLocal == ticketIdLocal
                                        join creator in _database.people on ticket.idCreatorPeople equals creator.id
                                        join clientAddress in _database.people on ticket.idClient equals clientAddress.id
                                        join tecnician in _database.people on ticket.idAssignedTechnician equals tecnician.id
                                        select new TicketPrintableModel
                    {
                        idLocal = ticket.idLocal,
                        address = clientAddress.address,
                        assignedTechnician = tecnician.name,
                        assignedTechnicianLastname = tecnician.lastname,
                        client = clientAddress.name,
                        clientLastname = clientAddress.lastname,
                        CreationDateTime = ticket.creationDate,
                        creatorPeople = creator.name,
                        creatorPeopleLastname = creator.lastname,
                        description = ticket.description,
                        email = clientAddress.email,
                        status = ticket.idStatus
                    }).FirstOrDefault();
                    return(foundTickets);
                }
            }

            return(null);
        }
コード例 #20
0
        public List <AdminsViewModel> GetListAdmins()
        {
            _database = new dbSIACEntities();
            var AdminIdRol = 1;

            List <AdminsViewModel> listOfAdmins = null;

            using (_database)
            {
                listOfAdmins = (from admins in _database.people
                                where admins.idRol == AdminIdRol
                                select new AdminsViewModel
                {
                    keyAdmin = admins.id,
                    emailAdmin = admins.email
                }
                                ).ToList();
            }

            _database.Dispose();
            return(listOfAdmins);
        }
コード例 #21
0
        public List <TechniciansViewModel> GetListTechnicians()
        {
            _database = new dbSIACEntities();
            var technicianIdRol = 2;

            List <TechniciansViewModel> listOfTechnicians = null;

            using (_database)
            {
                listOfTechnicians = (from technicians in _database.people
                                     where technicians.idRol == technicianIdRol
                                     select new TechniciansViewModel
                {
                    keyTechnician = technicians.id,
                    nameTechnician = technicians.name
                }
                                     ).ToList();
            }

            _database.Dispose();
            return(listOfTechnicians);
        }
コード例 #22
0
        public List <TicketHistoryViewModel> GeTicketHistoryViewModel(int ticketIdLocal)
        {
            _database = new dbSIACEntities();
            using (_database)
            {
                var ticketId          = _searchQueriesService.SearchTicketId(ticketIdLocal.ToString());
                var ticketHistoryList = (from ticket in _database.ticketHistory
                                         join creator in _database.people on ticket.idPeople equals creator.id
                                         where ticket.idTicket == ticketId
                                         select new TicketHistoryViewModel
                {
                    idTicket = ticket.id,
                    date = ticket.date,
                    idPeople = ticket.idPeople,
                    idStatus = ticket.idStatus,
                    note = ticket.note,
                    peopleName = creator.name,
                    peopleLastName = creator.lastname
                }).ToList();

                return(ticketHistoryList);
            }
        }
コード例 #23
0
        public List <SelectListItem> GetListOfCategories()
        {
            _database = new dbSIACEntities();
            List <CategoriesViewModel> listOfCategories = null;

            listOfCategories = (from cat in _database.category
                                select new CategoriesViewModel
            {
                keyCategories = cat.id,
                nameCategories = cat.name
            }
                                ).ToList();

            var categoriesList = listOfCategories.ConvertAll(data => new SelectListItem
            {
                Text     = data.nameCategories,
                Value    = data.keyCategories.ToString(),
                Selected = false
            });

            _database.Dispose();
            return(categoriesList);
        }
コード例 #24
0
        public List <TicketPrintableModel> GetActiveTicketsList(people currentPeople)
        {
            if (currentPeople.idRol != (int)ERols.TechnicianLead)
            {
                return(_printableTickets =
                           _searchQueriesService.SearchActiveTicketByClient(currentPeople.id, currentPeople.idRol));
            }

            _database = new dbSIACEntities();
            using (_database)
            {
                _printableTickets = (from ticket in _database.ticket
                                     where ticket.idStatus != (int)EStatus.Finalizado
                                     where ticket.idStatus != (int)EStatus.Cancelado
                                     join creator in _database.people on ticket.idCreatorPeople equals creator.id
                                     join clientAddress in _database.people on ticket.idClient equals clientAddress.id
                                     join tecnician in _database.people on ticket.idAssignedTechnician equals tecnician.id
                                     select new TicketPrintableModel
                {
                    idLocal = ticket.idLocal,
                    address = clientAddress.address,
                    assignedTechnician = tecnician.name,
                    assignedTechnicianLastname = tecnician.lastname,
                    client = clientAddress.name,
                    clientLastname = clientAddress.lastname,
                    CreationDateTime = ticket.creationDate,
                    creatorPeople = creator.name,
                    creatorPeopleLastname = creator.lastname,
                    description = ticket.description,
                    email = clientAddress.email,
                    status = ticket.idStatus
                }).ToList();
            }

            return(_printableTickets);
        }
コード例 #25
0
        /// <summary>
        ///     Find all active tickets of a client.
        /// </summary>
        /// <param name="idPeople"></param>
        /// <param name="idRol"></param>
        /// <returns>List&lt;TicketPrintableModel&gt;</returns>
        public List <TicketPrintableModel> SearchActiveTicketByClient(int idPeople, int idRol)
        {
            if (idPeople <= 0)
            {
                return(null);
            }
            var filteredTickets = _filterTicketsByRolAndId(idRol, idPeople);

            _database = new dbSIACEntities();
            using (_database)
            {
                var foundTickets = (from foundTicket in filteredTickets
                                    where foundTicket.idStatus != (int)EStatus.Finalizado
                                    where foundTicket.idStatus != (int)EStatus.Cancelado
                                    join creator in _database.people on foundTicket.idCreatorPeople equals creator.id
                                    join clientAddress in _database.people on foundTicket.idClient equals clientAddress.id
                                    join tecnician in _database.people on foundTicket.idAssignedTechnician equals tecnician.id
                                    select new TicketPrintableModel
                {
                    idLocal = foundTicket.idLocal,
                    address = clientAddress.address,
                    assignedTechnician = tecnician.name,
                    assignedTechnicianLastname = tecnician.lastname,
                    client = clientAddress.name,
                    clientLastname = clientAddress.lastname,
                    CreationDateTime = foundTicket.creationDate,
                    creatorPeople = creator.name,
                    creatorPeopleLastname = creator.lastname,
                    description = foundTicket.description,
                    email = clientAddress.email,
                    status = foundTicket.idStatus
                }).OrderByDescending(x => x.CreationDateTime);

                return(foundTickets.ToList());
            }
        }
コード例 #26
0
        public List <PeopleViewModel> GetListClients()
        {
            _database = new dbSIACEntities();
            var clientsIdRol = 3;

            List <PeopleViewModel> listOfClients = null;

            using (_database)
            {
                listOfClients = (from people in _database.people
                                 where people.idRol == clientsIdRol
                                 select new PeopleViewModel
                {
                    keyClient = people.id,
                    nameClient = people.name,
                    addressClient = people.address,
                    lastNameClient = people.lastname
                }
                                 ).ToList();
            }

            _database.Dispose();
            return(listOfClients);
        }