Exemple #1
0
        public async Task<HttpResponseMessage> SaveMessageAttachment()
        {
            string userId = User.Identity.GetUserId();
            string toUserId = string.Empty;
            bool isBulk = false;
            MediaStatusMessage stat = new MediaStatusMessage();

            // Check if the request contains multipart/form-data.
            if (!Request.Content.IsMimeMultipartContent())
            {
                throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);
            }

            MessagesDto msg = new MessagesDto();
            MessageMediaDto msgMedia = new MessageMediaDto();
            string defaultPath = AppSettings.Get<string>(ConfigConstants.DefaultMessageMediaSavePath);
            string defaultUrlPath = AppSettings.Get<string>(ConfigConstants.DefaultMessageMediaUrlPath);
            string root = System.Web.HttpContext.Current.Server.MapPath("~/" + defaultPath);

            var provider = new MultipartFormDataStreamProvider(root);
            string mediaUrl = string.Empty;

            try
            {
                await Request.Content.ReadAsMultipartAsync(provider);

                foreach (var key in provider.FormData.AllKeys)
                {
                    foreach (var val in provider.FormData.GetValues(key))
                    {
                        if (key == "ToUserId")
                        {
                            toUserId = val;
                        }
                        else if (key == "IsBulkMessage")
                        {
                            isBulk = val == "1" ? true : false;
                        }
                    }
                }

                foreach (MultipartFileData file in provider.FileData)
                {
                    string originalFileName = file.Headers.ContentDisposition.FileName.Replace("\"", string.Empty);
                    string fileExtension = Path.GetExtension(originalFileName);
                    string fname = Guid.NewGuid().ToString();
                    string fileName = fname + fileExtension;
                    string outputPath = Path.Combine(root, fileName);
                    System.IO.File.Move(file.LocalFileName, outputPath);
                    FileInfo fileInfo = new FileInfo(outputPath);
                    string size = Convert.ToDouble(fileInfo.Length / 1024) + string.Empty;

                    mediaUrl = AppSettings.Get<string>("ApiBaseUrl") + defaultUrlPath + "/" + fileName;

                    if (isBulk)
                    {
                        if (User.IsInRole(RoleName.CompanyRole))
                        {
                            this.youfferMessageService.SendBulkMessage(userId, string.Empty, originalFileName, fileExtension, size, fname);
                        }
                    }
                    else
                    {
                        if (User.IsInRole(RoleName.CompanyRole))
                        {
                            msg.UserId = toUserId;
                            msg.CompanyId = userId;
                        }
                        else if (User.IsInRole(RoleName.CustomerRole))
                        {
                            msg.CompanyId = toUserId;
                            msg.UserId = userId;
                        }

                        msg.FromUser = msg.CreatedBy = msg.ModifiedBy = userId;
                        msg.ToUser = toUserId;
                        msg.DoesContainMedia = true;
                        msg.Message = string.Empty;
                        msg.IsDeleted = false;

                        msg = this.youfferMessageService.CreateMessage(msg);
                        this.LoggerService.LogException("Message - json -" + JsonConvert.SerializeObject(msg));

                        msgMedia.MessageId = msg.Id;
                        msgMedia.Size = size;
                        msgMedia.Extension = fileExtension;
                        msgMedia.FileName = fileName;
                        msgMedia.OriginalFileName = file.Headers.ContentDisposition.FileName.Replace("\"", string.Empty);
                        msgMedia.IsDeleted = false;
                        msgMedia.IsSuccess = true;
                        msgMedia.CreatedBy = userId;
                        msgMedia.ModifiedBy = userId;

                        this.youfferMessageService.MakeMessageMediaEntry(msgMedia);
                        this.LoggerService.LogException("Message Media - json -" + JsonConvert.SerializeObject(msgMedia));
                        int unreadMsgCount = this.youfferMessageService.GetUnreadMsgCount(msg.UserId, false);

                        if (User.IsInRole(RoleName.CustomerRole))
                        {
                            OrganisationModel toUser = this.crmManagerService.GetOrganisation(toUserId);
                            ContactModel fromUser = this.crmManagerService.GetContact(userId);

                            if (!string.IsNullOrEmpty(toUser.GCMId))
                            {
                                this.pushMessageService.SendMessageNotificationToAndroid(toUser.GCMId, msg.Id.ToString(), msg.Message, fromUser.FirstName, Notification.companymsg.ToString());
                            }

                            if (!string.IsNullOrEmpty(toUser.UDId))
                            {
                                this.pushMessageService.SendMessageNotificationToiOS(toUser.UDId, msg.Id.ToString(), msg.Message, fromUser.FirstName, unreadMsgCount, Notification.companymsg.ToString());
                            }
                        }
                        else if (User.IsInRole(RoleName.CompanyRole))
                        {
                            ContactModel toUser = this.crmManagerService.GetContact(toUserId);
                            OrganisationModel fromUser = this.crmManagerService.GetOrganisation(userId);

                            if (!string.IsNullOrEmpty(toUser.GCMId))
                            {
                                this.pushMessageService.SendMessageNotificationToAndroid(toUser.GCMId, msg.Id.ToString(), msg.Message, fromUser.AccountName, Notification.usermsg.ToString());
                            }

                            if (!string.IsNullOrEmpty(toUser.UDId))
                            {
                                this.pushMessageService.SendMessageNotificationToiOS(toUser.UDId, msg.Id.ToString(), msg.Message, fromUser.AccountName, unreadMsgCount, Notification.usermsg.ToString());
                            }
                        }
                    }
                }

                stat.IsSuccess = true;
                stat.MediaUrl = mediaUrl;
                return Request.CreateResponse(HttpStatusCode.OK, stat);
            }
            catch (Exception ex)
            {
                this.LoggerService.LogException("SaveMessageAttachment : " + ex.Message);
                stat.IsSuccess = false;
                stat.MediaUrl = string.Empty;
                return Request.CreateResponse(HttpStatusCode.BadRequest, stat);
            }
        }
Exemple #2
0
        public async Task<IHttpActionResult> SaveProfileImage(MessageMediaDto msgMedia)
        {
            StatusMessage status = new StatusMessage();
            string userId = User.Identity.GetUserId();

            msgMedia.FileName = userId;
            msgMedia.Extension = ".jpg";

            string imageUrl = ImageHelper.SaveProfileImage(msgMedia);
            if (!string.IsNullOrEmpty(imageUrl))
            {
                if (User.IsInRole(RoleName.CompanyRole))
                {
                    var organisation = this.crmManagerService.GetOrganisation(userId);
                    organisation.ImageURL = imageUrl;
                }
                else if (User.IsInRole(RoleName.CustomerRole))
                {
                    var contact = this.crmManagerService.GetContact(userId);
                    contact.ImageURL = imageUrl;
                }

                status.IsSuccess = true;
            }

            return this.Ok(status);
        }
Exemple #3
0
        public async Task<IHttpActionResult> SaveMessageAttachment(MessageMediaDto msgMedia)
        {
            msgMedia = ImageHelper.SaveMessageMediaFiles(msgMedia);
            msgMedia = this.youfferMessageService.MakeMessageMediaEntry(msgMedia);
            msgMedia.IsSuccess = msgMedia.Id > 0;

            return this.Ok(msgMedia);
        }