예제 #1
0
        private static ContactWrapper GetContactWithFotos(ContactWrapper contact)
        {
            contact.SmallFotoUrl  = ContactPhotoManager.GetSmallSizePhoto(contact.ID, contact.IsCompany);
            contact.MediumFotoUrl = ContactPhotoManager.GetMediumSizePhoto(contact.ID, contact.IsCompany);

            return(contact);
        }
        private void ResponceContactPhotoUrl(HttpContext context)
        {
            var contactId = Convert.ToInt32(context.Request["cid"]);
            var isCompany = Convert.ToBoolean(context.Request["isc"]);
            var photoSize = Convert.ToInt32(context.Request["ps"]);

            String photoUrl = String.Empty;

            switch (photoSize)
            {
            case 1:
                photoUrl = ContactPhotoManager.GetSmallSizePhoto(contactId, isCompany);
                break;

            case 2:
                photoUrl = ContactPhotoManager.GetMediumSizePhoto(contactId, isCompany);
                break;

            case 3:
                photoUrl = ContactPhotoManager.GetBigSizePhoto(contactId, isCompany);
                break;

            default:
                throw new Exception(CRMErrorsResource.ContactPhotoSizeUnknown);
            }

            context.Response.Clear();
            context.Response.Write(photoUrl);
            context.Response.End();
        }
예제 #3
0
 protected string GetContactImgSrc(int contactID)
 {
     if (contactID > 0)
     {
         var contact = Global.DaoFactory.GetContactDao().GetByID(contactID);
         return(ContactPhotoManager.GetSmallSizePhoto(contactID, contact is Company));
     }
     return(WebImageSupplier.GetAbsoluteWebPath("blank.gif"));
 }
예제 #4
0
        public IEnumerable <VoipCallWrapper> GetCalls(string callType, ApiDateTime from, ApiDateTime to, Guid?agent, int?client, int?contactID)
        {
            var voipDao = DaoFactory.VoipDao;

            var filter = new VoipCallFilter
            {
                Type                                     = callType,
                FromDate                                 = from != null ? from.UtcTime : (DateTime?)null,
                ToDate                                   = to != null?to.UtcTime.AddDays(1).AddMilliseconds(-1) : (DateTime?)null,
                                              Agent      = agent,
                                              Client     = client,
                                              ContactID  = contactID,
                                              SortBy     = _context.SortBy,
                                              SortOrder  = !_context.SortDescending,
                                              SearchText = _context.FilterValue,
                                              Offset     = _context.StartIndex,
                                              Max        = _context.Count,
            };

            _context.SetDataPaginated();
            _context.SetDataFiltered();
            _context.SetDataSorted();
            _context.TotalCount = voipDao.GetCallsCount(filter);

            var defaultSmallPhoto = ContactPhotoManager.GetSmallSizePhoto(-1, false);
            var calls             = voipDao.GetCalls(filter).Select(
                r =>
            {
                ContactWrapper contact;
                if (r.ContactId != 0)
                {
                    contact = r.ContactIsCompany
                                          ? (ContactWrapper) new CompanyWrapper(r.ContactId)
                    {
                        DisplayName = r.ContactTitle
                    }
                                          : new PersonWrapper(r.ContactId)
                    {
                        DisplayName = r.ContactTitle
                    };
                    contact.SmallFotoUrl = ContactPhotoManager.GetSmallSizePhoto(contact.ID, contact.IsCompany);
                }
                else
                {
                    contact = new PersonWrapper(-1)
                    {
                        SmallFotoUrl = defaultSmallPhoto
                    };
                }
                return(new VoipCallWrapper(r, contact));
            }).ToList();

            return(calls);
        }
 protected override IEnumerable <KeyValuePair <string, object> > GetClientVariables(HttpContext context)
 {
     return(new List <KeyValuePair <string, object> >(1)
     {
         RegisterObject(new
         {
             SmallSizePhotoCompany = ContactPhotoManager.GetSmallSizePhoto(0, true),
             SmallSizePhoto = ContactPhotoManager.GetSmallSizePhoto(0, false),
             MediumSizePhotoCompany = ContactPhotoManager.GetMediumSizePhoto(0, true),
             MediumSizePhoto = ContactPhotoManager.GetMediumSizePhoto(0, false),
         })
     });
 }
예제 #6
0
        public ContactBaseWrapper(Contact contact)
            : base(contact.ID)
        {
            DisplayName = contact.GetTitle();
            IsPrivate   = CRMSecurity.IsPrivate(contact);

            if (IsPrivate)
            {
                AccessList = CRMSecurity.GetAccessSubjectTo(contact)
                             .Select(item => EmployeeWraper.Get(item.Key));
            }

            SmallFotoUrl = ContactPhotoManager.GetSmallSizePhoto(contact.ID, contact is Company);
            IsCompany    = contact is Company;
            CanEdit      = CRMSecurity.CanEdit(contact);
        }
예제 #7
0
        public String ContactsToJSON(List <Contact> contacts)
        {
            var result = new List <Object>();

            foreach (var contact in contacts)
            {
                if (contact is Company)
                {
                    result.Add(new
                    {
                        id          = contact.ID,
                        title       = contact.GetTitle().HtmlEncode(),
                        img         = ContactPhotoManager.GetSmallSizePhoto(contact.ID, true),
                        parentID    = 0,
                        parentTitle = "",
                        parentImg   = ""
                    });
                }
                else
                {
                    var people = (Person)contact;

                    var title = "";
                    var img   = "";

                    if (people.CompanyID != 0)
                    {
                        title = Global.DaoFactory.GetContactDao().GetByID(people.CompanyID).GetTitle();
                        img   = ContactPhotoManager.GetSmallSizePhoto(people.CompanyID, true);
                    }

                    result.Add(new
                    {
                        id          = contact.ID,
                        title       = contact.GetTitle().HtmlEncode(),
                        img         = ContactPhotoManager.GetSmallSizePhoto(contact.ID, false),
                        parentID    = people.CompanyID,
                        parentTitle = title.HtmlEncode(),
                        parentImg   = img
                    });
                }
            }

            return(JsonConvert.SerializeObject(result));
        }
예제 #8
0
        private void ResponceContactPhotoUrl(HttpContext context)
        {
            var contactId = Convert.ToInt32(context.Request["cid"]);
            var isCompany = Convert.ToBoolean(context.Request["isc"]);
            var photoSize = Convert.ToInt32(context.Request["ps"]);

            String photoUrl = String.Empty;

            switch (photoSize)
            {
            case 1:
                photoUrl = ContactPhotoManager.GetSmallSizePhoto(contactId, isCompany);
                break;

            case 2:
                photoUrl = ContactPhotoManager.GetMediumSizePhoto(contactId, isCompany);
                break;

            case 3:
                photoUrl = ContactPhotoManager.GetBigSizePhoto(contactId, isCompany);
                break;

            default:
                throw new Exception(CRMErrorsResource.ContactPhotoSizeUnknown);
            }

            context.Response.Clear();
            context.Response.Write(photoUrl);

            try
            {
                context.Response.Flush();
                context.Response.SuppressContent = true;
                context.ApplicationInstance.CompleteRequest();
            }
            catch (HttpException ex)
            {
                LogManager.GetLogger("ASC").Error("ResponceContactPhotoUrl", ex);
            }
        }
        public void ProcessRequest(HttpContext context)
        {
            try
            {
                var contactId = Convert.ToInt32(context.Request.QueryString["cid"]);
                var photoSize = Convert.ToInt32(context.Request.QueryString["ps"]);

                string photoUrl;

                switch (photoSize)
                {
                case 1:
                    photoUrl = ContactPhotoManager.GetSmallSizePhoto(contactId);
                    break;

                case 2:
                    photoUrl = ContactPhotoManager.GetMediumSizePhoto(contactId);
                    break;

                case 3:
                    photoUrl = ContactPhotoManager.GetBigSizePhoto(contactId);
                    break;

                default:
                    throw new HttpException("Unknown photo size");
                }

                context.Response.Clear();
                context.Response.Write(photoUrl);
            }
            catch (Exception)
            {
                context.Response.Redirect("404.html");
            }
            finally
            {
                context.Response.End();
            }
        }
예제 #10
0
        public IEnumerable <VoipCallWrapper> GetMissedCalls()
        {
            var voipDao           = DaoFactory.VoipDao;
            var defaultSmallPhoto = ContactPhotoManager.GetSmallSizePhoto(-1, false);

            var calls = voipDao.GetMissedCalls(SecurityContext.CurrentAccount.ID, 10, DateTime.UtcNow.AddDays(-7)).Select(
                r =>
            {
                ContactWrapper contact;
                if (r.ContactId != 0)
                {
                    contact = r.ContactIsCompany
                                      ? (ContactWrapper) new CompanyWrapper(r.ContactId)
                    {
                        DisplayName = r.ContactTitle
                    }
                                      : new PersonWrapper(r.ContactId)
                    {
                        DisplayName = r.ContactTitle
                    };
                    contact.SmallFotoUrl = ContactPhotoManager.GetSmallSizePhoto(contact.ID, contact.IsCompany);
                }
                else
                {
                    contact = new PersonWrapper(-1)
                    {
                        SmallFotoUrl = defaultSmallPhoto
                    };
                }
                return(new VoipCallWrapper(r, contact));
            }).ToList();

            _context.SetDataPaginated();
            _context.SetDataFiltered();
            _context.SetDataSorted();
            _context.TotalCount = calls.Count;

            return(calls);
        }
예제 #11
0
        public String AddNewContact(bool isCompany, string companyName, string firstName, string lastName)
        {
            if (isCompany)
            {
                var company = new Company
                {
                    CompanyName = companyName.Trim()
                };

                company.ID = Global.DaoFactory.GetContactDao().SaveContact(company);
                CRMSecurity.MakePublic(company);

                return(JsonConvert.SerializeObject(new
                {
                    id = company.ID,
                    title = company.GetTitle().HtmlEncode(),
                    img = ContactPhotoManager.GetSmallSizePhoto(company.ID, true)
                }));
            }
            else
            {
                var contact = new Person
                {
                    FirstName = firstName.Trim(),
                    LastName  = lastName.Trim()
                };

                contact.ID = Global.DaoFactory.GetContactDao().SaveContact(contact);
                CRMSecurity.MakePublic(contact);


                return(JsonConvert.SerializeObject(new
                {
                    id = contact.ID,
                    title = contact.GetTitle().HtmlEncode(),
                    img = ContactPhotoManager.GetSmallSizePhoto(contact.ID, false)
                }));
            }
        }
예제 #12
0
 protected string GetContactImgSrc()
 {
     return(SelectedContact != null?ContactPhotoManager.GetSmallSizePhoto(SelectedContact.ID, SelectedContact is Company) : WebImageSupplier.GetAbsoluteWebPath("blank.gif"));
 }
예제 #13
0
        protected void Page_Load(object sender, EventArgs e)
        {
            MobileVer = ASC.Web.Core.Mobile.MobileDetector.IsRequestMatchesMobile(this.Context);

            if (UrlParameters.Action != "export")
            {
                InitEmptyScreenControls();

                Utility.RegisterTypeForAjax(typeof(AjaxProHelper));

                if (EntityID == 0 && CurrentContact == null)//the main page with tasks
                {
                    RegisterClientScriptForFilter();
                    GetDataFromCookie();
                }
                else // the tab with tasks
                {
                    if (CurrentContact != null)
                    {
                        Page.ClientScript.RegisterClientScriptBlock(GetType(), "8adeda71-2ad7-43b7-9939-f69c776dfbc0",
                                                                    "contactForInitTaskActionPanel = "
                                                                    + JavaScriptSerializer.Serialize(new
                        {
                            id           = CurrentContact.ID,
                            displayName  = CurrentContact.GetTitle().HtmlEncode(),
                            smallFotoUrl = ContactPhotoManager.GetSmallSizePhoto(CurrentContact.ID, CurrentContact is Company)
                        })
                                                                    + "; ", true);
                    }
                    if (UserList != null && UserList.Count > 0)
                    {
                        _taskActionView.UserList = UserList;
                    }
                }
            }
            else // export to csv
            {
                if (!CRMSecurity.IsAdmin)
                {
                    Response.Redirect(PathProvider.StartURL());
                }

                var tasks = GetTasksByFilter();

                if (UrlParameters.View != "editor")
                {
                    Response.Clear();
                    Response.ContentType     = "text/csv; charset=utf-8";
                    Response.ContentEncoding = Encoding.UTF8;
                    Response.Charset         = Encoding.UTF8.WebName;

                    var fileName = "tasks.csv";

                    Response.AppendHeader("Content-Disposition", String.Format("attachment; filename={0}", fileName));


                    Response.Write(ExportToCSV.ExportTasksToCSV(tasks, false));
                    Response.End();
                }
                else
                {
                    var fileUrl = ExportToCSV.ExportTasksToCSV(tasks, true);
                    Response.Redirect(fileUrl);
                }
            }
        }
        protected override IEnumerable <KeyValuePair <string, object> > GetClientVariables(HttpContext context)
        {
            var imgs = new Dictionary <string, string>
            {
                { "empty_screen_filter", WebImageSupplier.GetAbsoluteWebPath("empty_screen_filter.png") },
                { "empty_screen_tasks", WebImageSupplier.GetAbsoluteWebPath("empty_screen_tasks.png", ProductEntryPoint.ID) },
                { "empty_screen_deals", WebImageSupplier.GetAbsoluteWebPath("empty_screen_deals.png", ProductEntryPoint.ID) },
                { "empty_screen_cases", WebImageSupplier.GetAbsoluteWebPath("empty_screen_cases.png", ProductEntryPoint.ID) },
                { "empty_screen_invoices", WebImageSupplier.GetAbsoluteWebPath("empty_screen_invoices.png", ProductEntryPoint.ID) },
                { "empty_screen_products_services", WebImageSupplier.GetAbsoluteWebPath("empty_screen_products_services.png", ProductEntryPoint.ID) },
                { "empty_screen_taxes", WebImageSupplier.GetAbsoluteWebPath("empty_screen_taxes.png", ProductEntryPoint.ID) },
                { "empty_screen_persons", WebImageSupplier.GetAbsoluteWebPath("empty_screen_persons.png", ProductEntryPoint.ID) },
                { "empty_screen_phones", WebImageSupplier.GetAbsoluteWebPath("empty_screen_phones.png", ProductEntryPoint.ID) },
                { "empty_screen_voip_settings", WebImageSupplier.GetAbsoluteWebPath("empty_screen_voip_settings.png", ProductEntryPoint.ID) },
                { "empty_people_logo_40_40", WebImageSupplier.GetAbsoluteWebPath("empty_people_logo_40_40.png", ProductEntryPoint.ID) },
                { "empty_screen_opportunity_participants", WebImageSupplier.GetAbsoluteWebPath("empty_screen_opportunity_participants.png", ProductEntryPoint.ID) },
                { "empty_screen_company_participants", WebImageSupplier.GetAbsoluteWebPath("empty_screen_company_participants.png", ProductEntryPoint.ID) },
                { "empty_screen_case_participants", WebImageSupplier.GetAbsoluteWebPath("empty_screen_case_participants.png", ProductEntryPoint.ID) },
                { "empty_screen_projects", WebImageSupplier.GetAbsoluteWebPath("empty_screen_projects.png", ProductEntryPoint.ID) },
                { "empty_screen_userfields", WebImageSupplier.GetAbsoluteWebPath("empty_screen_userfields.png", ProductEntryPoint.ID) },
                { "empty_screen_tags", WebImageSupplier.GetAbsoluteWebPath("empty_screen_tags.png", ProductEntryPoint.ID) },
                { "empty_screen_twitter", WebImageSupplier.GetAbsoluteWebPath("empty_screen_twitter.png", ProductEntryPoint.ID) }
            };

            return(new List <KeyValuePair <string, object> >(1)
            {
                RegisterObject(
                    new
                {
                    MediumSizePhotoCompany = ContactPhotoManager.GetMediumSizePhoto(0, true),
                    MediumSizePhoto = ContactPhotoManager.GetMediumSizePhoto(0, false),
                    SmallSizePhotoCompany = ContactPhotoManager.GetSmallSizePhoto(0, true),
                    SmallSizePhoto = ContactPhotoManager.GetSmallSizePhoto(0, false),
                    ProfileRemoved = Constants.LostUser.DisplayUserName(),
                    System.Threading.Thread.CurrentThread.CurrentCulture.NumberFormat.CurrencyDecimalSeparator,
                    KeyCodeCurrencyDecimalSeparator = (int)System.Threading.Thread.CurrentThread.CurrentCulture.NumberFormat.CurrencyDecimalSeparator[0],
                    Global.VisiblePageCount,
                    DefaultEntryCountOnPage = Global.EntryCountOnPage,
                    Global.DefaultCustomFieldSize,
                    Global.DefaultCustomFieldRows,
                    Global.DefaultCustomFieldCols,
                    Global.MaxCustomFieldSize,
                    Global.MaxCustomFieldRows,
                    Global.MaxCustomFieldCols,
                    Global.MaxHistoryEventCharacters,
                    Global.MaxInvoiceItemPrice,
                    Global.CanDownloadInvoices,
                    IsCRMAdmin = CRMSecurity.IsAdmin,
                    EmptyScrImgs = imgs,
                    ImageWebPath = WebImageSupplier.GetImageFolderAbsoluteWebPath(ProductEntryPoint.ID),

                    ContactSelectorTypeEnum =
                        new Dictionary <string, int>
                    {
                        { "All", (int)ContactSelectorTypeEnum.All },
                        { "Companies", (int)ContactSelectorTypeEnum.Companies },
                        { "CompaniesAndPersonsWithoutCompany", (int)ContactSelectorTypeEnum.CompaniesAndPersonsWithoutCompany },
                        { "Persons", (int)ContactSelectorTypeEnum.Persons },
                        { "PersonsWithoutCompany", (int)ContactSelectorTypeEnum.PersonsWithoutCompany }
                    },

                    HistoryCategorySystem =
                        new Dictionary <string, int>
                    {
                        { "TaskClosed", (int)HistoryCategorySystem.TaskClosed },
                        { "FilesUpload", (int)HistoryCategorySystem.FilesUpload },
                        { "MailMessage", (int)HistoryCategorySystem.MailMessage }
                    },

                    DefaultContactPhoto =
                        new Dictionary <string, string>
                    {
                        { "CompanyBigSizePhoto", ContactPhotoManager.GetBigSizePhoto(0, true) },
                        { "PersonBigSizePhoto", ContactPhotoManager.GetBigSizePhoto(0, false) },
                        { "CompanyMediumSizePhoto", ContactPhotoManager.GetMediumSizePhoto(0, true) },
                        { "PersonMediumSizePhoto", ContactPhotoManager.GetMediumSizePhoto(0, false) }
                    },

                    CookieKeyForPagination =
                        new Dictionary <string, string>
                    {
                        { "contacts", "contactPageNumber" },
                        { "tasks", "taskPageNumber" },
                        { "deals", "dealPageNumber" },
                        { "cases", "casesPageNumber" },
                        { "invoices", "invoicePageNumber" },
                        { "invoiceitems", "invoiceItemsPageNumber" }
                    },

                    CanCreateProjects = Global.CanCreateProjects()
                })
            });
        }
예제 #15
0
        public void ProcessRequest(HttpContext context)
        {
            var log = LogManager.GetLogger("ASC.Mail.ContactPhotoHandler");

            try
            {
                if (!SecurityContext.IsAuthenticated)
                {
                    throw new HttpException(403, "Access denied.");
                }

                var contactId = Convert.ToInt32(context.Request.QueryString["cid"]);
                var photoSize = Convert.ToInt32(context.Request.QueryString["ps"]);

                string photoUrl;

                switch (photoSize)
                {
                case 1:
                    photoUrl = ContactPhotoManager.GetSmallSizePhoto(contactId);
                    break;

                case 2:
                    photoUrl = ContactPhotoManager.GetMediumSizePhoto(contactId);
                    break;

                case 3:
                    photoUrl = ContactPhotoManager.GetBigSizePhoto(contactId);
                    break;

                default:
                    throw new HttpException("Unknown photo size");
                }

                context.Response.Clear();
                context.Response.Write(photoUrl);
            }
            catch (HttpException he)
            {
                log.Error("ContactPhoto handler failed", he);

                context.Response.StatusCode = he.GetHttpCode();
                context.Response.Write(he.Message != null ? HttpUtility.HtmlEncode(he.Message) : MailApiErrorsResource.ErrorInternalServer);
            }
            catch (Exception ex)
            {
                log.Error("ContactPhoto handler failed", ex);

                context.Response.StatusCode = 404;
                context.Response.Redirect("404.html");
            }
            finally
            {
                try
                {
                    context.Response.Flush();
                    context.Response.SuppressContent = true;
                    context.ApplicationInstance.CompleteRequest();
                }
                catch (HttpException ex)
                {
                    LogManager.GetLogger("ASC").Error("ResponceContactPhotoUrl", ex);
                }
            }
        }
예제 #16
0
        public async Task Invoke(HttpContext context,
                                 Global global,
                                 ContactPhotoManager contactPhotoManager)
        {
            context.Request.EnableBuffering();

            var action = context.Request.Query["action"];

            switch (action)
            {
            case "contactphotoulr":
            {
                var contactId = Convert.ToInt32(context.Request.Query["cid"]);
                var isCompany = Convert.ToBoolean(context.Request.Query["isc"]);
                var photoSize = Convert.ToInt32(context.Request.Query["ps"]);

                string photoUrl;

                switch (photoSize)
                {
                case 1:
                    photoUrl = contactPhotoManager.GetSmallSizePhoto(contactId, isCompany);
                    break;

                case 2:
                    photoUrl = contactPhotoManager.GetMediumSizePhoto(contactId, isCompany);
                    break;

                case 3:
                    photoUrl = contactPhotoManager.GetBigSizePhoto(contactId, isCompany);
                    break;

                default:
                    throw new Exception(CRMErrorsResource.ContactPhotoSizeUnknown);
                }

                context.Response.Clear();

                await context.Response.WriteAsync(photoUrl);
            }
            break;

            case "mailmessage":
            {
                var messageId = Convert.ToInt32(context.Request.Query["message_id"]);

                var filePath = String.Format("folder_{0}/message_{1}.html", (messageId / 1000 + 1) * 1000, messageId);

                string messageContent = string.Empty;

                using (var streamReader = new StreamReader(global.GetStore().GetReadStream("mail_messages", filePath)))
                {
                    messageContent = streamReader.ReadToEnd();
                }

                context.Response.Clear();

                await context.Response.WriteAsync(messageContent);
            }
            break;

            default:
                throw new ArgumentException(String.Format("action='{0}' is not defined", action));
            }
        }
예제 #17
0
        protected string GetContactsByPrefixJSON(EntityType targetEntityType, int targetEntityID, string prefix)
        {
            var allContacts    = new List <Contact>();
            var findedContacts = new List <Contact>();

            switch (targetEntityType)
            {
            case EntityType.Opportunity:
                allContacts = Global.DaoFactory.GetContactDao().GetContacts(Global.DaoFactory.GetDealDao().GetMembers(targetEntityID));
                break;

            case EntityType.Case:
                allContacts = Global.DaoFactory.GetContactDao().GetContacts(Global.DaoFactory.GetCasesDao().GetMembers(targetEntityID));
                break;
            }

            foreach (var c in allContacts)
            {
                if (c is Person)
                {
                    var people = (Person)c;
                    if (UserFormatter.GetUserName(people.FirstName, people.LastName).IndexOf(prefix) != -1)
                    {
                        findedContacts.Add(c);
                    }
                }
                else
                {
                    var company = (Company)c;
                    if (company.CompanyName.IndexOf(prefix) != -1)
                    {
                        findedContacts.Add(c);
                    }
                }
            }

            return(JavaScriptSerializer.Serialize(findedContacts.ConvertAll(contact =>
            {
                var displayTitle = String.Empty;
                var imgPath = String.Empty;

                if (contact is Person)
                {
                    var people = (Person)contact;
                    imgPath = ContactPhotoManager.GetSmallSizePhoto(people.ID, false);;
                    displayTitle = UserFormatter.GetUserName(people.FirstName, people.LastName);
                }
                else
                {
                    var company = (Company)contact;
                    imgPath = ContactPhotoManager.GetSmallSizePhoto(company.ID, true);
                    displayTitle = company.CompanyName;
                }


                return new
                {
                    id = contact.ID,
                    title = displayTitle,
                    img = imgPath
                };
            }
                                                                            )));
        }