Beispiel #1
0
        public Task<HttpResponseMessage> SaveProfileImage()
        {
            string userId = User.Identity.GetUserId();
            MediaStatusMessage stat = new MediaStatusMessage();

            if (!Request.Content.IsMimeMultipartContent())
            {
                throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);
            }

            string defaultPath = AppSettings.Get<string>(ConfigConstants.DefaultImageSavePath);
            string defaultUrlPath = AppSettings.Get<string>(ConfigConstants.DefaultImageUrlPath);
            string root = System.Web.HttpContext.Current.Server.MapPath("~/" + defaultPath);

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

            var task = Request.Content.ReadAsMultipartAsync(provider).ContinueWith(t =>
            {
                if (t.IsFaulted || t.IsCanceled)
                {
                    stat.ErrorMessage = t.Exception.Message;
                    Request.CreateResponse(HttpStatusCode.InternalServerError, stat);
                    this.LoggerService.LogException("SaveProfileImage : Id - " + userId + " Exception - " + t.Exception.Message);
                }

                foreach (MultipartFileData file in provider.FileData)
                {
                    string originalFileName = file.Headers.ContentDisposition.FileName.Replace("\"", string.Empty);
                    string fileName = userId + ".jpg";
                    string outputPath = Path.Combine(root, fileName);
                    if (File.Exists(outputPath))
                    {
                        File.Delete(outputPath);
                    }

                    System.IO.File.Move(file.LocalFileName, outputPath);

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

                    if (!string.IsNullOrEmpty(imageUrl))
                    {
                        if (User.IsInRole(RoleName.CompanyRole))
                        {
                            var organisation = this.crmManagerService.GetOrganisation(userId);
                            organisation.ImageURL = imageUrl;
                            organisation.IsImageUploaded = true;
                            this.crmManagerService.UpdateOrganisation(userId, organisation);
                        }
                        else if (User.IsInRole(RoleName.CustomerRole))
                        {
                            var contact = this.crmManagerService.GetContact(userId);
                            contact.ImageURL = imageUrl;
                            this.crmManagerService.UpdateContact(userId, contact);
                        }
                    }
                }

                stat.IsSuccess = true;
                stat.MediaUrl = imageUrl;

                return Request.CreateResponse(HttpStatusCode.OK, stat);
            });

            return task;
        }
Beispiel #2
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);
            }
        }