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); } }
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); }
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); }