This commit is contained in:
2025-08-06 12:31:52 +02:00
parent c003c29d83
commit c93b0c9bec
18 changed files with 249 additions and 18 deletions

View File

@@ -0,0 +1,24 @@
using System.Text.Json.Serialization;
namespace salesbook.Shared.Core.Dto;
public class ActivityFileDto
{
[JsonPropertyName("id")]
public string Id { get; set; }
[JsonPropertyName("fileName")]
public string FileName { get; set; }
[JsonPropertyName("originalSize")]
public int OriginalSize { get; set; }
[JsonPropertyName("lastUpd")]
public DateTime LastUpd { get; set; }
[JsonPropertyName("descrizione")]
public string Descrizione { get; set; }
[JsonPropertyName("modello")]
public string Modello { get; set; }
}

View File

@@ -10,4 +10,10 @@ public class CRMCreateContactResponseDTO
[JsonPropertyName("ptbPros")]
public PtbPros? PtbPros { get; set; }
[JsonPropertyName("vtbCliePersRif")]
public List<VtbCliePersRif> VtbCliePersRif { get; set; }
[JsonPropertyName("ptbProsRifs")]
public List<PtbProsRif> PtbProsRif { get; set; }
}

View File

@@ -0,0 +1,12 @@
using System.Text.Json.Serialization;
namespace salesbook.Shared.Core.Dto;
public class CRMTransferProspectRequestDTO
{
[JsonPropertyName("codAnag")]
public string? CodAnag { get; set; }
[JsonPropertyName("codPpro")]
public string? CodPpro { get; set; }
}

View File

@@ -0,0 +1,10 @@
using salesbook.Shared.Core.Entity;
using System.Text.Json.Serialization;
namespace salesbook.Shared.Core.Dto;
public class CRMTransferProspectResponseDTO
{
[JsonPropertyName("anagClie")]
public AnagClie? AnagClie { get; set; }
}

View File

@@ -6,11 +6,36 @@ namespace salesbook.Shared.Core.Entity;
[Table("ptb_pros_rif")]
public class PtbProsRif
{
[PrimaryKey, Column("composite_key")]
public string CompositeKey { get; set; }
private string? _codPpro;
[Column("cod_ppro"), JsonPropertyName("codPpro"), Indexed(Name = "PtbProsRifPK", Order = 1, Unique = true)]
public string CodPpro { get; set; }
public string? CodPpro
{
get => _codPpro;
set
{
_codPpro = value;
if (_codPpro != null && _idPersRif != null)
UpdateCompositeKey();
}
}
private int? _idPersRif;
[Column("id_pers_rif"), JsonPropertyName("idPersRif"), Indexed(Name = "PtbProsRifPK", Order = 2, Unique = true)]
public int IdPersRif { get; set; }
public int? IdPersRif
{
get => _idPersRif;
set
{
_idPersRif = value;
if (_codPpro != null && _idPersRif != null)
UpdateCompositeKey();
}
}
[Column("persona_rif"), JsonPropertyName("personaRif")]
public string PersonaRif { get; set; }
@@ -29,4 +54,7 @@ public class PtbProsRif
[Column("telefono"), JsonPropertyName("telefono")]
public string Telefono { get; set; }
private void UpdateCompositeKey() =>
CompositeKey = $"{CodPpro}::{IdPersRif}";
}

View File

@@ -7,7 +7,7 @@ namespace salesbook.Shared.Core.Entity;
public class StbActivity
{
[PrimaryKey, Column("activity_id"), JsonPropertyName("activityId")]
public string ActivityId { get; set; }
public string? ActivityId { get; set; }
[Column("activity_result_id"), JsonPropertyName("activityResultId")]
public string? ActivityResultId { get; set; }

View File

@@ -6,11 +6,36 @@ namespace salesbook.Shared.Core.Entity;
[Table("stb_activity_type")]
public class StbActivityType
{
[PrimaryKey, Column("composite_key")]
public string CompositeKey { get; set; }
private string? _activityTypeId;
[Column("activity_type_id"), JsonPropertyName("activityTypeId"), Indexed(Name = "ActivityTypePK", Order = 1, Unique = true)]
public string ActivityTypeId { get; set; }
public string? ActivityTypeId
{
get => _activityTypeId;
set
{
_activityTypeId = value;
if (_activityTypeId != null && _flagTipologia != null)
UpdateCompositeKey();
}
}
private string? _flagTipologia;
[Column("flag_tipologia"), JsonPropertyName("flagTipologia"), Indexed(Name = "ActivityTypePK", Order = 2, Unique = true)]
public string FlagTipologia { get; set; }
public string? FlagTipologia
{
get => _flagTipologia;
set
{
_flagTipologia = value;
if (_activityTypeId != null && _flagTipologia != null)
UpdateCompositeKey();
}
}
[Column("estimated_duration"), JsonPropertyName("estimatedDuration")]
public double? EstimatedDuration { get; set; } = 0;
@@ -38,4 +63,7 @@ public class StbActivityType
[Column("flag_view_calendar"), JsonPropertyName("flagViewCalendar")]
public bool FlagViewCalendar { get; set; }
private void UpdateCompositeKey() =>
CompositeKey = $"{ActivityTypeId}::{FlagTipologia}";
}

View File

@@ -6,11 +6,36 @@ namespace salesbook.Shared.Core.Entity;
[Table("vtb_clie_pers_rif")]
public class VtbCliePersRif
{
[PrimaryKey, Column("composite_key")]
public string CompositeKey { get; set; }
private int? _idPersRif;
[Column("id_pers_rif"), JsonPropertyName("idPersRif"), Indexed(Name = "VtbCliePersRifPK", Order = 1, Unique = true)]
public int IdPersRif { get; set; }
public int? IdPersRif
{
get => _idPersRif;
set
{
_idPersRif = value;
if (_idPersRif != null && _codAnag != null)
UpdateCompositeKey();
}
}
private string? _codAnag;
[Column("cod_anag"), JsonPropertyName("codAnag"), Indexed(Name = "VtbCliePersRifPK", Order = 2, Unique = true)]
public string CodAnag { get; set; }
public string? CodAnag
{
get => _codAnag;
set
{
_codAnag = value;
if (_idPersRif != null && _codAnag != null)
UpdateCompositeKey();
}
}
[Column("persona_rif"), JsonPropertyName("personaRif")]
public string PersonaRif { get; set; }
@@ -38,4 +63,7 @@ public class VtbCliePersRif
[Column("data_ult_agg"), JsonPropertyName("dataUltAgg")]
public DateTime? DataUltAgg { get; set; } = DateTime.Now;
private void UpdateCompositeKey() =>
CompositeKey = $"{IdPersRif}::{CodAnag}";
}

View File

@@ -6,11 +6,36 @@ namespace salesbook.Shared.Core.Entity;
[Table("vtb_dest")]
public class VtbDest
{
[PrimaryKey, Column("composite_key")]
public string CompositeKey { get; set; }
private string? _codAnag;
[Column("cod_anag"), JsonPropertyName("codAnag"), Indexed(Name = "VtbDestPK", Order = 1, Unique = true)]
public string CodAnag { get; set; }
public string? CodAnag
{
get => _codAnag;
set
{
_codAnag = value;
if (_codAnag != null && _codVdes != null)
UpdateCompositeKey();
}
}
private string? _codVdes;
[Column("cod_vdes"), JsonPropertyName("codVdes"), Indexed(Name = "VtbDestPK", Order = 2, Unique = true)]
public string CodVdes { get; set; }
public string? CodVdes
{
get => _codVdes;
set
{
_codVdes = value;
if (_codAnag != null && _codVdes != null)
UpdateCompositeKey();
}
}
[Column("destinatario"), JsonPropertyName("destinatario")]
public string Destinatario { get; set; }
@@ -194,4 +219,7 @@ public class VtbDest
[Column("cod_fisc_legale"), JsonPropertyName("codFiscLegale")]
public string CodFiscLegale { get; set; }
private void UpdateCompositeKey() =>
CompositeKey = $"{CodAnag}::{CodVdes}";
}

View File

@@ -16,9 +16,12 @@ public interface IIntegryApiService
Task<List<StbActivity>?> SaveActivity(ActivityDTO activity);
Task<CRMCreateContactResponseDTO?> SaveContact(CRMCreateContactRequestDTO request);
Task<CheckVatResponseDTO> CheckVat(CheckVatRequestDTO request);
Task<CRMTransferProspectResponseDTO> TransferProspect(CRMTransferProspectRequestDTO request);
Task UploadFile(string id, byte[] file, string fileName);
Task<List<ActivityFileDto>> GetActivityFile(string activityId);
Task<Stream> DownloadFile(string activityId, string fileName);
//Position
Task<PositionDTO> SavePosition(PositionDTO position);
Task<PositionDTO> RetrievePosition(string id);

View File

@@ -13,6 +13,7 @@ public interface IManageDataService
Task<ContactDTO?> GetSpecificContact(string codAnag, bool IsContact);
Task InsertOrUpdate<T>(T objectToSave);
Task InsertOrUpdate<T>(List<T> listToSave);
Task Delete<T>(T objectToDelete);
Task DeleteActivity(ActivityDTO activity);

View File

@@ -72,6 +72,9 @@ public class IntegryApiService(IIntegryApiRestClient integryApiRestClient, IUser
public Task<CRMCreateContactResponseDTO?> SaveContact(CRMCreateContactRequestDTO request) =>
integryApiRestClient.AuthorizedPost<CRMCreateContactResponseDTO>("crm/createContact", request);
public Task<CRMTransferProspectResponseDTO> TransferProspect(CRMTransferProspectRequestDTO request) =>
integryApiRestClient.AuthorizedPost<CRMTransferProspectResponseDTO>("crm/transferProspect", request)!;
public Task<CheckVatResponseDTO> CheckVat(CheckVatRequestDTO request) =>
integryApiRestClient.Post<CheckVatResponseDTO>("checkPartitaIva", request)!;
@@ -113,7 +116,7 @@ public class IntegryApiService(IIntegryApiRestClient integryApiRestClient, IUser
{
var queryParams = new Dictionary<string, object> { { "activityId", activityId } };
using var content = new MultipartFormDataContent();
var content = new MultipartFormDataContent();
var fileContent = new ByteArrayContent(file);
fileContent.Headers.ContentType = MediaTypeHeaderValue.Parse("multipart/form-data");
content.Add(fileContent, "files", fileName);
@@ -121,6 +124,19 @@ public class IntegryApiService(IIntegryApiRestClient integryApiRestClient, IUser
return integryApiRestClient.Post<object>($"uploadStbActivityFileAttachment", content, queryParams);
}
public Task<List<ActivityFileDto>> GetActivityFile(string activityId)
{
var queryParams = new Dictionary<string, object>
{
{ "activityId", activityId }
};
return integryApiRestClient.AuthorizedGet<List<ActivityFileDto>>($"activity/getActivityFile", queryParams)!;
}
public Task<Stream> DownloadFile(string activityId, string fileName) =>
integryApiRestClient.Download($"downloadStbFileAttachment/{activityId}/{fileName}")!;
public Task<PositionDTO> SavePosition(PositionDTO position) =>
integryApiRestClient.Post<PositionDTO>("savePosition", position)!;