/// <summary>
 /// Costruttore
 /// </summary>
 public DTO_ExtUserAddResult()
 {
     User = new DTO_User();
     User.UserId = 0;
     User.PersonId = 0;
     Errors = Enums.ExternalUserCreateError.none;
 }
Example #2
0
        public DTO_AddInit()
        {
            IsNew              = false;
            CurrentUser        = new DTO_User();
            CanModifyUser      = false;
            availableLanguages = new List <DomainModel.Languages.BaseLanguageItem>();
            Categories         = new List <DTO_CategoryTree>();
            //SelectedCategoryId = 0;

            TicketData   = new DTO_Ticket();
            CanListUsers = false;
        }
        /// <summary>
        /// Valida la mail di un utente, in automatico al primo tentativo di accesso
        /// </summary>
        /// <param name="Mail">Mail utente</param>
        /// <param name="Code">Codice utente</param>
        /// <returns>Eventuali segnalazioni errori</returns>
        public Domain.DTO.DTO_User UserValidateExternal(
            String Mail,
            String Code,
            String Token,
            ref Domain.Enums.ExternalUserValidateError Err)
        {
            Err = Domain.Enums.ExternalUserValidateError.none;

            TicketUser User = Manager.GetAll <TicketUser>(u => u.mail == Mail || (u.Person != null && u.Person.Mail == Mail)).Skip(0).Take(1).ToList().FirstOrDefault();

            if (User == null || User.Id <= 0)
            {
                Err = Domain.Enums.ExternalUserValidateError.invalidMail;
                return(new Domain.DTO.DTO_User());
            }
            //else if (String.IsNullOrEmpty(User.Code))
            //{
            //    Err = Domain.Enums.ExternalUserValidateError.invalidCode;
            //    return new Domain.DTO.DTO_User();
            //}
            else if (User.Code != AuthenticationHelper.Encrypt(Code))
            {
                Err = Domain.Enums.ExternalUserValidateError.invalidCode;
                return(new Domain.DTO.DTO_User());
            }

            //Controllo Token
            if (User.MailChecked == false)
            {
                Domain.Enums.TokenValidationResult TokErr = this.TokenValidate(Token, User.Id, Domain.Enums.TokenType.Registration);

                switch (TokErr)
                {
                //case Domain.Enums.TokenValidationResult.UserNotFound
                case Domain.Enums.TokenValidationResult.TokenNotFound:
                    Err = Domain.Enums.ExternalUserValidateError.TokenEmpty;
                    //return new Domain.DTO.DTO_User();
                    break;

                case Domain.Enums.TokenValidationResult.InvalidFormat:
                    Err = Domain.Enums.ExternalUserValidateError.TokenInvalid;
                    //return new Domain.DTO.DTO_User();
                    break;

                case Domain.Enums.TokenValidationResult.Exired:
                    Err = Domain.Enums.ExternalUserValidateError.TokenExpired;
                    //return new Domain.DTO.DTO_User();
                    break;
                    //case Domain.Enums.TokenValidationResult.Validated:
                }
            }

            Boolean IsInternal = (User.Person != null);

            String LangCode = "";

            if (!String.IsNullOrEmpty(User.LanguageCode))
            {
                LangCode = User.LanguageCode;
            }
            else if (IsInternal)
            {
                Language lang = Manager.Get <Language>(User.Person.LanguageID);
                if (lang != null)
                {
                    LangCode = lang.Code;
                }
            }
            else
            {
                Language lang = Manager.GetDefaultLanguage();
                LangCode = lang.Code;
            }

            Domain.DTO.DTO_User Usr = new Domain.DTO.DTO_User
            {
                UserId       = User.Id,
                PersonId     = (IsInternal) ? User.Person.Id : -1,
                LanguageCode = LangCode,
                Mail         = (IsInternal) ? User.Person.Mail : User.mail,
                Name         = (IsInternal) ? User.Person.Name : User.Name,
                SName        = (IsInternal) ? User.Person.Surname : User.Sname,
                IsOwnerNotificationEnable = User.IsNotificationActiveUser
            };

            //UserId = User.Id;

            return(Usr);
        }
Example #4
0
        /// <summary>
        /// Aggiunge un messeggio DELL'UTENTE al Ticket indicato
        /// </summary>
        /// <param name="TicketId">Id Ticket</param>
        /// <param name="Text">Testo messaggio</param>
        /// <param name="Preview">Eventuale anteprima</param>
        /// <param name="ChangeStatus">Indica se dopo l'invio il ticket dovrà modificare il suo stato (riapertura/chiusura)</param>
        /// <param name="NewStatus">Il nuovo stato (se va modificato)</param>
        /// <returns>Eventuali errori</returns>
        public Domain.Enums.TicketMessageSendError MessageSendUserExt(
            Int64 TicketId,
            String Text,
            String Preview,
            Domain.DTO.DTO_User User,
            ref Int64 MessageId,
            Int64 DraftId   = -1,
            Boolean IsDraft = false)
        {
            bool ticketIsClose = false;

            if (String.IsNullOrEmpty(Text) || String.IsNullOrEmpty(Preview))
            {
                return(Domain.Enums.TicketMessageSendError.NoMessage);
            }

            Ticket tk = Manager.Get <Ticket>(TicketId);

            if (tk == null)
            {
                return(Domain.Enums.TicketMessageSendError.TicketNotFound);
            }

            if (tk.IsDraft)
            {
                return(Domain.Enums.TicketMessageSendError.DraftTicket);
            }

            if (tk.Owner != null && tk.Owner.Id != User.UserId)
            {
                return(Domain.Enums.TicketMessageSendError.NoPermission);
            }

            bool    IsNew = false;
            Message msg   = (from Message m in tk.Messages where m.IsDraft == true && m.Creator != null && m.Creator.Id == User.UserId select m).FirstOrDefault();

            if (msg == null || msg.Id <= 0)
            {
                msg   = new Message();
                IsNew = true;
            }
            else
            {
                //    TEORICAMENTE NON SERVE, MA FORSE MEGLIO METTERCELO!!!
                if (DraftId != msg.Id)
                {
                    //UPDATE FILE MESSAGE ID, FROM DraftId To msgId!!!
                }
            }

            if (IsNew)
            {
                msg.CreateMetaInfo(CurrentPerson, UC.IpAddress, UC.ProxyIpAddress);
            }
            else
            {
                msg.UpdateMetaInfo(CurrentPerson, UC.IpAddress, UC.ProxyIpAddress);
            }

            msg.Text         = Text;
            msg.Preview      = Preview;
            msg.Creator      = this.UserGet(User.UserId);
            msg.DisplayName  = "";
            msg.SendDate     = DateTime.Now;
            msg.ShowRealName = true;
            msg.Ticket       = tk;
            msg.Type         = Domain.Enums.MessageType.Request;
            msg.UserType     = Domain.Enums.MessageUserType.Partecipant;
            msg.Visibility   = true;

            if (tk.Status == TicketStatus.closeSolved || tk.Status == TicketStatus.closeUnsolved)
            {
                msg.IsDraft   = true;
                ticketIsClose = true;
            }
            else
            {
                msg.IsDraft = IsDraft;
            }


            msg.Action   = Domain.Enums.MessageActionType.normal;
            msg.ToStatus = tk.Status;

            Domain.TicketUser usr = (from Assignment asg in tk.Assignemts where asg.AssignedTo != null orderby asg.CreatedOn select asg.AssignedTo).FirstOrDefault();

            msg.ToUser = usr;

            Domain.Category cat = (from Assignment asg in tk.Assignemts where asg.AssignedCategory != null orderby asg.CreatedOn select asg.AssignedCategory).FirstOrDefault();

            if (cat == null)
            {
                cat = tk.CreationCategory;
            }

            msg.ToCategory = cat;

            if (IsNew)
            {
                tk.Messages.Add(msg);
            }
            else
            {
                Manager.SaveOrUpdate <Message>(msg);
            }

            tk.UpdateMetaInfo(CurrentPerson, UC.IpAddress, UC.ProxyIpAddress);

            if (tk.Owner.Id == this.CurrentUser.Id)
            {
                tk.LastUserAccess = DateTime.Now;
            }
            else
            {
                tk.LastCreatorAccess = DateTime.Now;
            }


            Manager.SaveOrUpdate <Ticket>(tk);

            if (ticketIsClose)
            {
                return(TicketMessageSendError.TicketClosed);
            }

            return(Domain.Enums.TicketMessageSendError.none);
        }