public ResponseBase SaveNewPurchase(int?MusicId, PaskolUser Buyer, double Total, Guid permId) { ResponseBase res = new ResponseBase(); try { Music music = null; if (MusicId != null && Buyer != null) { music = _musicRep.GetByID(MusicId.Value); if (music != null) { var file = new Model.File() { FileType = FileType.PDF, suffix = ".pdf", UserId = Buyer.Id, }; Purchase newPurchase = new Purchase(); newPurchase.Customer = Buyer; newPurchase.Music = music; newPurchase.PurchaseCost = Total; newPurchase.PurchaseStatus = PurchaseStatus.NotPaidToArtist; newPurchase.PurchaseDate = DateTime.Now; newPurchase.Permision = _permissionRep.GetByID(permId); newPurchase.CustomerReference = "";//TODO newPurchase.PurchaseAgreement = file; this._rep.Add(newPurchase); this._uow.Commit(); string pathToDownload = string.Format(CommonHelper.GetBaseUrl() + "/File/GetFile?FileId={0}&UserId={1}&FileType={2}&version={3}&suffix={4}&FileName={5}" , music.WAVFileID, music.ArtistID, FileType.Music, music.WAVFile.version, music.WAVFile.suffix, music.HebrewName); string permissions = string.Join(", ", newPurchase.Permision.PropertyValues .Where(pv => !pv.PermissionProperty.IsCostLevel) .Select(pv => pv.PermissionProperty.Name + " - " + pv.Name)); // Create Report _pdfService.PurchaseAgreement( WebConf.FSBaseRoute, Path.GetFileName(file.RelativePath), Buyer.Id, DateTime.Now, Buyer.UserName, Buyer.Email, music.HebrewName, music.MusicWriter, music.MusicComposer, music.MusicPerformer, permissions, newPurchase.PurchaseCost.HasValue ? newPurchase.PurchaseCost.Value : 0, newPurchase.CustomerReference, newPurchase.Music.Exceptions); // notify artist and customer this._emailSrv.AlertArtistPurchaseSuccess(newPurchase.Music.Artist.User.Email); this._emailSrv.AlertBuyerPurchaseSuccess(newPurchase.Customer.Email, pathToDownload); res.Success = true; } } if (music == null || Buyer == null) { res.Success = false; res.Message = "לא הצלחנו לזהות לקוח או מוזיקה"; } } catch (Exception e) { res.Message = e.Message; res.Success = false; } return(res); }
public ResponseBase ConfirmPhonePurchase(Purchase ConfPurchase, ConfirmTypeAction confirmAction) { ResponseBase res = new ResponseBase(); try { var purchase = this._purchasseRep.GetByID(ConfPurchase.PurchaseId); if (purchase != null) { // delete from confirmation table Confirmation conf = ((ConfirmationRepository)this._rep) .GetByEntityId(ConfPurchase.PurchaseId.ToString()); if (conf != null) { switch (confirmAction) { case ConfirmTypeAction.Ok: var file = new Model.File() { FileType = FileType.PDF, suffix = ".pdf", UserId = ConfPurchase.Customer.Id, }; // save that paid by customer but not paid to artist purchase.PurchaseStatus = PurchaseStatus.NotPaidToArtist; purchase.Note = " שולם.. " + ConfPurchase.Note; purchase.PurchaseCost = ConfPurchase.PurchaseCost; purchase.CustomerReference = ConfPurchase.CustomerReference; purchase.PurchaseAgreement = file; this._purchasseRep.Update(purchase); this._rep.Delete(conf); this._uow.Commit(); string pathToDownload = string.Format(CommonHelper.GetBaseUrl() + "/File/GetFile?FileId={0}&UserId={1}&FileType={2}&version={3}&suffix={4}&FileName={5}" , purchase.Music.WAVFileID, purchase.Music.ArtistID, FileType.Music, purchase.Music.WAVFile.version, purchase.Music.WAVFile.suffix, purchase.Music.HebrewName); string permissions = string.Join(", ", purchase.Permision.PropertyValues .Where(pv => !pv.PermissionProperty.IsCostLevel) .Select(pv => pv.PermissionProperty.Name + " - " + pv.Name)); // Create Report _pdfService.PurchaseAgreement( WebConf.FSBaseRoute, Path.GetFileName(file.RelativePath), purchase.Customer.Id, DateTime.Now, purchase.Customer.UserName, purchase.Customer.Email, purchase.Music.HebrewName, purchase.Music.MusicWriter, purchase.Music.MusicComposer, purchase.Music.MusicPerformer, permissions, purchase.PurchaseCost.HasValue ? purchase.PurchaseCost.Value : 0, purchase.CustomerReference, purchase.Music.Exceptions); // Send email _emailService.AlertArtistPurchaseSuccess(purchase.Music.Artist.User.Email); _emailService.AlertBuyerPurchaseSuccess(purchase.Customer.Email, pathToDownload); break; case ConfirmTypeAction.Decline: purchase.Note = " בוטל " + ConfPurchase.Note; this._purchasseRep.Update(purchase); this._uow.Commit(); break; } res.Success = true; } } else { res.Message = "הרכישה המבוקשת לעדכון לא נמצאה"; res.Success = false; } } catch (Exception e) { res.Message = e.Message; res.Success = false; } return(res); }