Exemplo n.º 1
0
 protected void Page_Load(object sender, EventArgs e)
 {
     if (!string.IsNullOrEmpty(Request.QueryString["hospital_id"]))
     {
         Hospital = db.Hospitals.FirstOrDefault(p => p.hospital_id == Convert.ToInt32(Request.QueryString["hospital_id"]));
     }
     else if (!string.IsNullOrEmpty(Request.QueryString["contact_id"]))
     {
         Contact = db.Contacts.FirstOrDefault(p => p.contact_id == Convert.ToInt32(Request.QueryString["contact_id"]));
     }
 }
Exemplo n.º 2
0
 public static Contact ToContact(this Data.Contact input)
 {
     return(new Contact
     {
         Id = input.Id,
         LoginId = input.LoginId,
         EmailAddress = input.EmailAddress,
         Phone = input.Phone,
         Twitter = input.Twitter,
         Instagram = input.Instagram,
         Facebook = input.Facebook
     });
 }
Exemplo n.º 3
0
 public Contact ContactIDataReader(IDataReader dr)
 {
     Data.Contact obj = new Data.Contact();
     obj.Id      = (dr["Id"] is DBNull) ? string.Empty : dr["Id"].ToString();
     obj.Name    = (dr["Name"] is DBNull) ? string.Empty : dr["Name"].ToString();
     obj.Company = (dr["Company"] is DBNull) ? string.Empty : dr["Company"].ToString();
     obj.Email   = (dr["Email"] is DBNull) ? string.Empty : dr["Email"].ToString();
     obj.Phone   = (dr["Phone"] is DBNull) ? string.Empty : dr["Phone"].ToString();
     obj.Website = (dr["Website"] is DBNull) ? string.Empty : dr["Website"].ToString();
     obj.Title   = (dr["Title"] is DBNull) ? string.Empty : dr["Title"].ToString();
     obj.Detail  = (dr["Detail"] is DBNull) ? string.Empty : dr["Detail"].ToString();
     obj.Date    = (dr["Date"] is DBNull) ? string.Empty : dr["Date"].ToString();
     return(obj);
 }
Exemplo n.º 4
0
        public async Task AddContactFriendAsync(int userId, Data.Contact contact)
        {
            var book = await _dbContext.ContactCollection.FindSync(x => x.UserId == userId).FirstOrDefaultAsync();

            if (book == null)
            {
                await _dbContext.ContactCollection.InsertOneAsync(new ContactBook()
                {
                    UserId = userId
                });
            }

            var filter = Builders <ContactBook> .Filter.Eq(x => x.UserId, userId);

            var update = Builders <ContactBook> .Update.AddToSet(x => x.Contacts, contact);

            await _dbContext.ContactCollection.UpdateOneAsync(filter, update);
        }
 protected void btnContact_Click(object sender, EventArgs e)
 {
     if (Page.IsValid)
     {
         Data.Contact obj = new Data.Contact();
         obj.Name = txtName.Text;
         obj.Company = txtCompany.Text;
         obj.Address = txtAddress.Text;
         obj.Tel = txtTel.Text;
         obj.Mail = txtMail.Text;
         obj.Detail = txtcontents.Text;
         obj.Date = Common.DateTimeClass.ConvertDateTime(DateTime.Now, "MM/dd/yyyy HH:mm:ss");
         obj.Active = "1";
         obj.Lang = "vi";
         Business.ContactService.Contact_Insert(obj);
         Common. ControlClass.ResetControlValues(this);
         ltrMessage.Text = "Thông tin đã được gửi!";
     }
 }
Exemplo n.º 6
0
 protected void btnSend_Click(object sender, EventArgs e)
 {
     Data.Contact obj = new Data.Contact();
     obj.Name     = txtHoTen.Text;
     obj.Company  = txtAddress.Text;
     obj.Email    = txtEmail.Text;
     obj.Phone    = txtPhone.Text;
     obj.Website  = string.Empty;
     obj.Title    = txtTitle.Text;
     obj.Detail   = txtDetail.Text;
     obj.Date     = DateTimeClass.ConvertDateTime(DateTime.Now.ToLongDateString(), "MM/dd/yyyy HH:mm:ss");
     obj.Language = "vi";
     ContactService.Contact_Insert(obj);
     #region [SendMail]
     try
     {
         string strchuoi = "Họ tên: " + txtHoTen.Text.Trim() + "\n<br />";
         strchuoi += "E-mail: " + txtEmail.Text.Trim() + "\n<br />";
         strchuoi += "Điện thoại: " + txtPhone.Text.Trim() + "\n<br />";
         strchuoi += "Địa chỉ: " + txtAddress.Text.Trim() + "\n<br />";
         strchuoi += "Nội dung: " + txtDetail.Text.Trim() + "\n";
         MailSender.SendMail("", "", txtTitle.Text.Trim(), strchuoi);
         WebMsgBox.Show("Bạn đã gửi thành công!");
     }
     catch (Exception ex)
     {
         WebMsgBox.Show("Bạn đã gửi thất bại! Vui lòng thử lại lần nữa!");
     }
     finally
     {
         txtTitle.Text   = string.Empty;
         txtAddress.Text = string.Empty;
         txtHoTen.Text   = string.Empty;
         txtEmail.Text   = string.Empty;
         txtDetail.Text  = string.Empty;
         txtPhone.Text   = string.Empty;
     }
     #endregion
 }
Exemplo n.º 7
0
        public static ReturnObject EditPrimary(HttpContext context, long id, string first_name, string last_name, string phone, string fax)
        {
            Data.Contact item = new Data.Contact(id);

            item.FirstName = first_name;
            item.LastName = last_name;
            item.Phone = phone;
            item.Fax = fax;
            item.Save();

            return new ReturnObject()
            {
                Result = item,
                Growl = new ReturnGrowlObject()
                {
                    Type = "default",
                    Vars = new ReturnGrowlVarsObject()
                    {
                        text = "You have successfully updated your primary contact.",
                        title = "Contact Updated"
                    }
                }
            };
        }
Exemplo n.º 8
0
        protected void rgContacts_InsertCommand(object sender, GridCommandEventArgs e)
        {
            GridEditableItem item = e.Item as GridEditableItem;

            Data.Contact c = new Data.Contact();

            try
            {
                c.contact_nm   = (item.FindControl("tbContactNm") as TextBox).Text;
                c.street_addrs = (item.FindControl("tbStreetAddrs2") as TextBox).Text;
                c.city         = (item.FindControl("tbCity2") as TextBox).Text;
                c.state        = (item.FindControl("tbState2") as TextBox).Text;
                c.zip          = (item.FindControl("tbZip2") as TextBox).Text;
                c.ph_no        = (item.FindControl("tbPhoneNo2") as TextBox).Text;
                c.wsc_id       = WSCID;
            }
            catch (Exception ex)
            {
                DisplayHospitalMessage(true, "You must complete all required form fields!");
                e.Canceled = true;
                return;
            }

            try
            {
                db.Contacts.InsertOnSubmit(c);
                db.SubmitChanges();

                DisplayContactMessage(false, "The emergency contact was added!");
            }
            catch (Exception ex)
            {
                DisplayContactMessage(true, "Unable to add contact. Reason: " + ex.Message);
                e.Canceled = true;
            }
        }
 protected void Update_Click(object sender, EventArgs e)
 {
     if (Page.IsValid){
         Data.Contact obj = new Data.Contact();
         obj.Id = Id;
         obj.Name = txtName.Text;
         obj.Company = txtCompany.Text;
         obj.Address = txtAddress.Text;
         obj.Tel = txtTel.Text;
         obj.Mail = txtMail.Text;
         obj.Detail = fckDetail.Value;
         obj.Date = DateTimeClass.ConvertDateTime(txtDate.Text, "MM/dd/yyyy HH:mm:ss");
         obj.Active = chkActive.Checked ? "1" : "0";
         obj.Lang = Lang;
         if (Insert == true){
             ContactService.Contact_Insert(obj);
         }
         else{
             ContactService.Contact_Update(obj);
         }
         BindGrid();
         pnView.Visible = true;
         pnUpdate.Visible = false;
         Insert = false;
     }
 }
Exemplo n.º 10
0
        public static ReturnObject Edit(HttpContext context, long id, long parent_id, string username, string password, string email, string first_name, string last_name, string street, string city, string state, string zip, string company = null, string street_2 = null, string phone = null)
        {
            Lib.Data.DrugCompanyUser item = null;
            Lib.Data.DrugCompany parent = new Data.DrugCompany(parent_id);
            Lib.Data.UserProfile profile = null;
            Lib.Data.Contact contact = null;
            Lib.Data.Address address = null;
            Framework.Security.User user = null;

            if (id > 0)
            {
                item = new Lib.Data.DrugCompanyUser(id);
                profile = item.Profile;
                user = profile.User;
                contact = profile.PrimaryContact;
                address = profile.PrimaryAddress;
            }
            else
            {
                item = new Lib.Data.DrugCompanyUser();
                profile = new Data.UserProfile();
                profile.Created = DateTime.Now;
                contact = new Data.Contact();
                address = new Data.Address();

                string error = "";
                user = Framework.Security.Manager.CreateUser(username, password, email, out error);

                user.AddGroup(Framework.Security.Group.FindByName("users"));
                user.AddGroup(Framework.Security.Group.FindByName("drugcompany"));

                if (!string.IsNullOrEmpty(error))
                {
                    return new ReturnObject()
                    {
                        Error = true,
                        StatusCode = 200,
                        Message = error
                    };
                }
            }

            address.Street1 = street;
            address.Street2 = street_2;
            address.City = city;
            address.State = state;
            address.Zip = zip;
            address.Country = "United States";
            address.Save();

            contact.Email = email;
            contact.FirstName = first_name;
            contact.LastName = last_name;
            contact.Phone = phone;
            contact.Save();

            var ut = Lib.Data.UserType.FindByName("drug-company");

            profile.UserTypeID = ut.ID.Value;
            profile.UserID = user.ID.Value;
            profile.PrimaryAddressID = address.ID.Value;
            profile.PrimaryContactID = contact.ID.Value;
            profile.Save();

            item.ProfileID = profile.ID.Value;
            item.DrugCompanyID = parent.ID.Value;
            item.Save();

            return new ReturnObject()
            {
                Result = item,
                Redirect = new ReturnRedirectObject()
                {
                    Hash = "admin/drugs/companies/list"
                },
                Growl = new ReturnGrowlObject()
                {
                    Type = "default",
                    Vars = new ReturnGrowlVarsObject()
                    {
                        text = "You have successfully saved this drug company user.",
                        title = "Drug Company User Saved"
                    }
                }
            };
        }
Exemplo n.º 11
0
        public static ReturnObject Edit(HttpContext context, long provider_user_id, long organization_id, long facility_id, string user_type, string username, string password, string email, string first_name, string last_name, string street, string city, string state, string zip, string street_2 = null, string phone = null)
        {
            Lib.Data.Provider provider;
            Lib.Data.ProviderUser providerUser;

            UserProfile userProfile;
            Contact contact;
            Address address;

            Framework.Security.User user;

            if (provider_user_id > 0)
            {
                providerUser = new Lib.Data.ProviderUser(provider_user_id);
                provider = providerUser.Provider;
                userProfile = providerUser.Profile;
                user = userProfile.User;
                contact = userProfile.PrimaryContact;
                address = userProfile.PrimaryAddress;

                user.Username = username;
                user.Save();

                Framework.Security.Manager.SetPassword(user, password);
            }
            else
            {
                provider = new Lib.Data.Provider();
                providerUser = new Lib.Data.ProviderUser();
                userProfile = new Data.UserProfile();
                userProfile.Created = DateTime.Now;
                contact = new Data.Contact();
                address = new Data.Address();

                string error = "";
                user = Framework.Security.Manager.CreateUser(username, password, email, out error);

                user.AddGroup(Framework.Security.Group.FindByName("users"));
                user.AddGroup(Framework.Security.Group.FindByName("providers"));

                if (!string.IsNullOrEmpty(error))
                {
                    return new ReturnObject()
                    {
                        Error = true,
                        StatusCode = 200,
                        Message = error
                    };
                }
            }

            if (user_type != "technical" && user_type != "administrative")
            {
                return new ReturnObject()
                {
                    Error = true,
                    StatusCode = 200,
                    Message = "Invalid user type."
                };
            }

            address.Street1 = street;
            address.Street2 = street_2;
            address.City = city;
            address.State = state;
            address.Zip = zip;
            address.Country = "United States";
            address.Save();

            contact.Email = email;
            contact.FirstName = first_name;
            contact.LastName = last_name;
            contact.Phone = phone;
            contact.Save();

            provider.AddressID = address.ID;
            provider.PrimaryContactID = contact.ID;
            provider.Created = DateTime.Now;
            provider.FacilitySize = String.Empty;
            provider.Name = string.Empty;
            provider.Save();

            var ut = Lib.Data.UserType.FindByName("provider");

            userProfile.UserTypeID = ut.ID.Value;
            userProfile.UserID = user.ID.Value;
            userProfile.PrimaryAddressID = address.ID.Value;
            userProfile.PrimaryContactID = contact.ID.Value;
            userProfile.Save();

            providerUser.ProfileID = userProfile.ID.Value;
            providerUser.ProviderID = provider.ID.Value;
            providerUser.OrganizationID = organization_id;
            providerUser.ProviderUserType = user_type;
            providerUser.PrimaryFacilityID = facility_id;
            providerUser.Save();

            return new ReturnObject()
            {
                Result = providerUser,
                Growl = new ReturnGrowlObject()
                {
                    Type = "default",
                    Vars = new ReturnGrowlVarsObject()
                    {
                        text = "You have successfully saved this provider user.",
                        title = "Provider User Saved"
                    }
                }
            };
        }
Exemplo n.º 12
0
        public static ReturnObject EditProvider(HttpContext context, long provider_user_id, string username, string password, string email, string first_name, string last_name, string street, string city, string state, string zip, string expires_on, string is_enabled, string street_2 = null, string phone = null)
        {
            IAccountService accountSvc = ObjectFactory.GetInstance<IAccountService>();

            Lib.Data.Provider provider;
            Lib.Data.ProviderUser providerUser;

            UserProfile userProfile;
            Contact contact;
            Address address;
            Account account;

            Framework.Security.User user;

            if (provider_user_id > 0)
            {
                providerUser = new Lib.Data.ProviderUser(provider_user_id);
                provider = providerUser.Provider;
                userProfile = providerUser.Profile;
                user = userProfile.User;
                contact = userProfile.PrimaryContact;
                address = userProfile.PrimaryAddress;

                account = accountSvc.GetByUserProfileId(userProfile.ID ?? 0);

                user.Username = username;
                user.Save();

                Framework.Security.Manager.SetPassword(user, password);
            }
            else
            {
                provider = new Lib.Data.Provider();
                providerUser = new Lib.Data.ProviderUser();
                userProfile = new Data.UserProfile();
                userProfile.Created = DateTime.Now;
                contact = new Data.Contact();
                address = new Data.Address();

                account = new Account
                {
                    CreatedAt = DateTime.Now
                };

                string error = "";
                user = Framework.Security.Manager.CreateUser(username, password, email, out error);

                user.AddGroup(Framework.Security.Group.FindByName("users"));
                user.AddGroup(Framework.Security.Group.FindByName("providers"));

                if (!string.IsNullOrEmpty(error))
                {
                    return new ReturnObject()
                    {
                        Error = true,
                        StatusCode = 200,
                        Message = error
                    };
                }
            }

            DateTime expiresOn;

            if(!DateTime.TryParse(expires_on, out expiresOn))
            {
                    return new ReturnObject()
                    {
                        Error = true,
                        StatusCode = 200,
                        Message = "Invalide expiration date."
                    };
            }

            address.Street1 = street;
            address.Street2 = street_2;
            address.City = city;
            address.State = state;
            address.Zip = zip;
            address.Country = "United States";
            address.Save();

            contact.Email = email;
            contact.FirstName = first_name;
            contact.LastName = last_name;
            contact.Phone = phone;
            contact.Save();

            provider.AddressID = address.ID;
            provider.PrimaryContactID = contact.ID;
            provider.Created = DateTime.Now;
            provider.FacilitySize = String.Empty;
            provider.Name = string.Empty;
            provider.Save();

            var ut = Lib.Data.UserType.FindByName("provider");

            userProfile.UserTypeID = ut.ID.Value;
            userProfile.UserID = user.ID.Value;
            userProfile.PrimaryAddressID = address.ID.Value;
            userProfile.PrimaryContactID = contact.ID.Value;
            userProfile.IsEcommerce = true;
            userProfile.Save();

            providerUser.ProfileID = userProfile.ID.Value;
            providerUser.ProviderID = provider.ID.Value;
            providerUser.OrganizationID = 0;
            providerUser.ProviderUserType = "";
            providerUser.PrimaryFacilityID = 0;
            providerUser.Save();

            account.UserProifleId = userProfile.ID ?? 0;
            account.ExpiresOn = expiresOn;
            account.IsEnabled = is_enabled == "yes";

            accountSvc.Save(account);

            return new ReturnObject()
            {
                Result = providerUser,
                Growl = new ReturnGrowlObject()
                {
                    Type = "default",
                    Vars = new ReturnGrowlVarsObject()
                    {
                        text = "You have successfully saved this provider user.",
                        title = "Provider User Saved"
                    }
                }
            };
        }
Exemplo n.º 13
0
        public ProtocolInitializer GetProtocolInitializer(IReadOnlyCollection <TenantModel> tenantModels, ProtocolModel protocolModel,
                                                          Collaboration collaboration, WorkflowProperty dsw_p_CollaborationSignSummaryTemplateId, WorkflowProperty dsw_a_Collaboration_GenerateSignSummary,
                                                          WorkflowProperty dsw_p_ProposerRole, UDSDto udsDto)
        {
            ProtocolInitializer protInitializer = new ProtocolInitializer();

            // Oggetto
            protInitializer.Subject = protocolModel.Object;
            // Protocol Type
            protInitializer.ProtocolType = protocolModel.ProtocolType.EntityShortId;
            //Note
            protInitializer.Notes = protocolModel.Note;
            //Protocollo
            protInitializer.DocumentProtocol = protocolModel.DocumentProtocol;
            //Date
            protInitializer.DocumentDate = protocolModel.DocumentDate;
            // Classificazione
            if (protocolModel.Category != null && protocolModel.Category.IdCategory.HasValue)
            {
                protInitializer.Category = FacadeFactory.Instance.CategoryFacade.GetById(protocolModel.Category.IdCategory.Value);
            }
            if (protocolModel.Container != null && protocolModel.Container.IdContainer.HasValue)
            {
                protInitializer.Containers = new List <Data.Container> {
                    FacadeFactory.Instance.ContainerFacade.GetById(Convert.ToInt32(protocolModel.Container.IdContainer))
                };
            }
            if (protocolModel.DocumentTypeCode != null)
            {
                protInitializer.DocumentTypeLabel = FacadeFactory.Instance.TableDocTypeFacade.GetByCode(protocolModel.DocumentTypeCode).Description;
            }

            string owner = DocSuiteContext.Current.User.UserName;

            // Gestione documenti
            if (protocolModel.MainDocument != null && !string.IsNullOrEmpty(protocolModel.MainDocument.FileName) &&
                (protocolModel.MainDocument.ContentStream != null || protocolModel.MainDocument.DocumentId.HasValue))
            {
                protInitializer.MainDocument = SaveStream(owner, protocolModel.MainDocument);
            }

            // Allegati
            IEnumerable <DocumentModel> results = null;

            if (protocolModel.Attachments != null && (results = protocolModel.Attachments.Where(f => !string.IsNullOrEmpty(f.FileName) && (f.ContentStream != null || f.DocumentId.HasValue))).Any())
            {
                protInitializer.Attachments = SaveStream(owner, results);
            }

            if (collaboration != null && dsw_p_CollaborationSignSummaryTemplateId != null && dsw_a_Collaboration_GenerateSignSummary != null &&
                dsw_a_Collaboration_GenerateSignSummary.ValueBoolean.HasValue && dsw_a_Collaboration_GenerateSignSummary.ValueBoolean.Value &&
                dsw_p_CollaborationSignSummaryTemplateId.ValueGuid.HasValue && dsw_p_CollaborationSignSummaryTemplateId.ValueGuid.Value != Guid.Empty)
            {
                TemplateDocumentRepository templateDocumentRepository = WebAPIImpersonatorFacade.ImpersonateFinder(new TemplateDocumentRepositoryFinder(tenantModels),
                                                                                                                   (impersonationType, finder) =>
                {
                    finder.UniqueId     = dsw_p_CollaborationSignSummaryTemplateId.ValueGuid.Value;
                    finder.EnablePaging = false;
                    return(finder.DoSearch().SingleOrDefault()?.Entity);
                });

                if (templateDocumentRepository != null)
                {
                    BiblosChainInfo        biblosChainInfo    = new BiblosChainInfo(templateDocumentRepository.IdArchiveChain);
                    DocumentInfo           biblosDocumentInfo = biblosChainInfo.Documents.Single(f => !f.IsRemoved);
                    List <BuildValueModel> buildValueModels   = new List <BuildValueModel>();
                    buildValueModels.Add(new BuildValueModel()
                    {
                        IsHTML = false,
                        Name   = "oggetto",
                        Value  = protInitializer.Subject,
                    });
                    DateTime signDate;
                    string   token;
                    foreach (CollaborationSign item in collaboration.CollaborationSigns)
                    {
                        signDate = item.SignDate ?? item.LastChangedDate.Value.DateTime;
                        token    = signDate.DayOfWeek == DayOfWeek.Sunday ? "la" : "il";
                        buildValueModels.Add(new BuildValueModel()
                        {
                            IsHTML = false,
                            Name   = $"signer_info_{item.Incremental}",
                            Value  = $"{item.SignName} {token} {signDate.ToLongDateString()}",
                        });
                    }
                    buildValueModels = BuildValueProposerRole(dsw_p_ProposerRole, buildValueModels);
                    buildValueModels = BuildValueUDS(udsDto, buildValueModels);
                    byte[] pdf = Services.StampaConforme.Service.BuildPDF(biblosDocumentInfo.Stream, buildValueModels.ToArray(), string.Empty);
                    if (protInitializer.Attachments == null)
                    {
                        protInitializer.Attachments = new List <DocumentInfo>();
                    }
                    protInitializer.Attachments.Add(SaveStream(owner, pdf, "riepilogo_firmatari.pdf"));
                }
            }
            // Annessi
            results = null;
            if (protocolModel.Annexes != null && (results = protocolModel.Annexes.Where(f => !string.IsNullOrEmpty(f.FileName) && (f.ContentStream != null || f.DocumentId.HasValue))).Any())
            {
                protInitializer.Annexed = SaveStream(owner, results);
            }

            // Contatti
            protInitializer.Senders    = new List <Data.ContactDTO>();
            protInitializer.Recipients = new List <Data.ContactDTO>();
            if (protocolModel.ContactManuals != null && protocolModel.ContactManuals.Any())
            {
                foreach (ProtocolContactManualModel protocolContactManualModel in protocolModel.ContactManuals)
                {
                    Data.Contact contact = new Data.Contact();
                    contact.ContactType   = new Data.ContactType(Data.ContactType.Aoo);
                    contact.Description   = protocolContactManualModel.Description;
                    contact.CertifiedMail = protocolContactManualModel.CertifiedEmail;
                    contact.EmailAddress  = protocolContactManualModel.EMail;
                    if (!string.IsNullOrEmpty(protocolContactManualModel.Address))
                    {
                        contact.Address         = new Data.Address();
                        contact.Address.Address = protocolContactManualModel.Address;
                    }

                    if (protocolContactManualModel.ComunicationType == ComunicationType.Sender)
                    {
                        protInitializer.Senders.Add(new Data.ContactDTO(contact, Data.ContactDTO.ContactType.Manual));
                    }
                    else
                    {
                        protInitializer.Recipients.Add(new Data.ContactDTO(contact, Data.ContactDTO.ContactType.Manual));
                    }
                }
            }
            if (protocolModel.Contacts != null && protocolModel.Contacts.Any())
            {
                foreach (ProtocolContactModel protocolContactModel in protocolModel.Contacts)
                {
                    Data.Contact contact = FacadeFactory.Instance.ContactFacade.GetById(protocolContactModel.IdContact);
                    if (protocolContactModel.ComunicationType == ComunicationType.Sender)
                    {
                        protInitializer.Senders.Add(new Data.ContactDTO(contact, Data.ContactDTO.ContactType.Address));
                    }
                    else
                    {
                        protInitializer.Recipients.Add(new Data.ContactDTO(contact, Data.ContactDTO.ContactType.Address));
                    }
                }
            }
            return(protInitializer);
        }
Exemplo n.º 14
0
 public static Contact ToDto(this Data.Contact from) => from.ConvertTo <Contact>();
Exemplo n.º 15
0
        public static ReturnObject Edit(HttpContext context, string username, string email, long user_type, string contact_prefix, string contact_name, string contact_phone, string contact_suffix = "", string contact_title = "", string contact_fax = "", string password = "", string confirm = "", long id = 0)
        {
            if( id == 0 && string.IsNullOrEmpty( password ) )
                return new ReturnObject() { Error = true, Message = "A password is required to create a new user." };

            Framework.Security.User item = null;
            Data.UserProfile profile = null;
            Data.Contact contact = null;
            if (id > 0)
            {
                item = new Framework.Security.User(id);
                profile = Data.UserProfile.FindByUser(item);
                contact = profile.PrimaryContact;
                if( contact == null )
                    contact = new Data.Contact();
            }
            else
            {
                if (Framework.Security.Manager.UserExists(email, username))
                    return new ReturnObject() { Error = true, Message = "A user with that username / email is already in the system." };

                item = new Framework.Security.User();
                item.ResetPasswordGuid = Guid.Empty;
                item.LastLogin = DateTime.Now;

                profile = new Data.UserProfile();
                profile.Created = DateTime.Now;
                contact = new Data.Contact();
            }
            item.Username = username;
            item.Email = email;
            if( !string.IsNullOrEmpty( password ) )
            {
                if( password != confirm )
                    return new ReturnObject() { Error = true, Message = "Your passwords do not match." };

                item.PasswordSalt = Framework.Security.Manager.GetRandomSalt();
                item.Password = Framework.Security.Hash.GetSHA512(password+item.PasswordSalt);
            }

            var name_parts = contact_name.Split(' ');

            if (name_parts.Length <= 1)
                return new ReturnObject() { Error = true, Message = "Please enter the contact's full name." };

            item.Save();

            string fname = name_parts[0];
            string lname = name_parts[name_parts.Length - 1];
            for (var i = 1; i < name_parts.Length - 1; i++)
                fname += " " + name_parts[i];

            contact.Prefix = contact_prefix;
            contact.FirstName = fname;
            contact.LastName = lname;
            contact.Postfix = contact_suffix;
            contact.Title = contact_title;
            contact.Email = email;
            contact.Phone = contact_phone;
            contact.Fax = contact_fax;
            contact.Save();

            profile.UserID = item.ID.Value;
            if (profile.UserTypeID != user_type)
            {
                profile.UserTypeID = user_type;

                item.ClearGroups();

                item.AddGroup(Framework.Security.Group.FindByName("users"));
                item.AddGroup(Framework.Security.Group.FindByName("admin"));

                if( user_type == 1 )
                    item.AddGroup(Framework.Security.Group.FindByName("dev"));
            }
            profile.PrimaryContactID = contact.ID;
            profile.Save();

            return new ReturnObject() { Result = item, Redirect = new ReturnRedirectObject() { Hash = "admin/security/users/list" }, Growl = new ReturnGrowlObject() { Type = "default", Vars = new ReturnGrowlVarsObject() { text = "You have successfully saved this user.", title = "User Saved" } } };
        }