public bool SaveChanges(AfiliadoSuma afiliado, HttpPostedFileBase fileNoValidado = null) { using (LealtadEntities db = new LealtadEntities()) { db.Database.Connection.ConnectionString = AppModule.ConnectionString("SumaLealtad"); // Entidad: Affiliate Affiliate affiliate = db.Affiliates.FirstOrDefault(a => a.id == afiliado.id); if (affiliate != null) { ///affiliate.storeid = afiliado.storeid; affiliate.channelid = afiliado.channelid; affiliate.typeid = afiliado.typeid; affiliate.typedelivery = afiliado.typedelivery; affiliate.storeiddelivery = afiliado.storeiddelivery; affiliate.modifieduserid = (int)HttpContext.Current.Session["userid"]; affiliate.modifieddate = System.DateTime.Now; affiliate.sumastatusid = afiliado.sumastatusid; affiliate.reasonsid = afiliado.reasonsid; affiliate.twitter_account = afiliado.twitter_account; affiliate.facebook_account = afiliado.facebook_account; affiliate.instagram_account = afiliado.instagram_account; affiliate.comments = afiliado.comments; } // Entidad: CLIENTE CLIENTE cliente = db.CLIENTES.FirstOrDefault(c => c.TIPO_DOCUMENTO + "-" + c.NRO_DOCUMENTO == afiliado.docnumber); if (cliente != null) { cliente.E_MAIL = afiliado.email == null ? "" : afiliado.email; cliente.NOMBRE_CLIENTE1 = afiliado.name; cliente.NOMBRE_CLIENTE2 = afiliado.name2 == null ? string.Empty : afiliado.name2; cliente.APELLIDO_CLIENTE1 = afiliado.lastname1 == null ? "" : afiliado.lastname1; cliente.APELLIDO_CLIENTE2 = afiliado.lastname2 == null ? "" : afiliado.lastname2; cliente.FECHA_NACIMIENTO = afiliado.birthdate == null ? new DateTime?() : DateTime.ParseExact(afiliado.birthdate, "dd/MM/yyyy", CultureInfo.InvariantCulture); //cliente.NACIONALIDAD = afiliado.nationality; //cliente.SEXO = afiliado.gender; //cliente.EDO_CIVIL = afiliado.maritalstatus; //cliente.COD_SUCURSAL = afiliado.storeid; //nuevos campos con claves a tablas nuevas cliente.NACIONALITY_ID = Convert.ToInt32(afiliado.nationality); cliente.SEX_ID = Convert.ToInt32(afiliado.gender); cliente.CIVIL_STATUS_ID = Convert.ToInt32(afiliado.maritalstatus); var query = db.Stores.OrderBy(x=>x.store_code); cliente.STORE_ID = (from q in query.AsEnumerable() where q.store_code == afiliado.storeid.ToString() select q.id).FirstOrDefault(); cliente.TELEFONO_HAB = afiliado.phone1; cliente.TELEFONO_OFIC = afiliado.phone2; cliente.TELEFONO_CEL = afiliado.phone3; cliente.COD_ESTADO = afiliado.cod_estado; cliente.COD_CIUDAD = afiliado.cod_ciudad; cliente.COD_MUNICIPIO = afiliado.cod_municipio; cliente.COD_PARROQUIA = afiliado.cod_parroquia; cliente.COD_URBANIZACION = afiliado.cod_urbanizacion; if (afiliado.occupation == null) { cliente.OCUPACION = afiliado.occupation; } else if (afiliado.occupation.Length > 30) { cliente.OCUPACION = afiliado.occupation.Substring(0, 30); } else { cliente.OCUPACION = afiliado.occupation; } } // Entida: TARJETA //TARJETA tarjeta = db.TARJETAS.FirstOrDefault(t => t.NRO_AFILIACION.Equals(afiliado.id)); Decimal pan = Convert.ToDecimal(afiliado.pan); TARJETA tarjeta = db.TARJETAS.FirstOrDefault(t => t.NRO_TARJETA.Equals(pan)); if (tarjeta != null) { tarjeta.NRO_AFILIACION = afiliado.id; tarjeta.ESTATUS_TARJETA = afiliado.estatustarjeta; tarjeta.COD_USUARIO = (int)HttpContext.Current.Session["userid"]; tarjeta.TRACK2 = afiliado.trackII; tarjeta.CVV2 = afiliado.cvv2; tarjeta.FECHA_CREACION = afiliado.printed == null ? new DateTime?() : DateTime.ParseExact(afiliado.printed, "dd/MM/yyyy", CultureInfo.InvariantCulture); } else if (afiliado.pan != null && afiliado.estatustarjeta != null) { tarjeta = new TARJETA() { NRO_TARJETA = pan, NRO_AFILIACION = afiliado.id, TIPO_DOCUMENTO = afiliado.docnumber.Substring(0, 1), NRO_DOCUMENTO = afiliado.docnumber.Substring(2), ESTATUS_TARJETA = afiliado.estatustarjeta, SALDO_PUNTOS = null, OBSERVACIONES = null, COD_USUARIO = (int)HttpContext.Current.Session["userid"], TRACK1 = null, TRACK2 = afiliado.trackII, CVV2 = afiliado.cvv2, FECHA_CREACION = afiliado.printed == null ? new DateTime?() : DateTime.ParseExact(afiliado.printed, "dd/MM/yyyy", CultureInfo.InvariantCulture) }; db.TARJETAS.Add(tarjeta); } // Entidad: CustomerInterest foreach (var m in db.CustomerInterests.Where(f => f.customerid == afiliado.id)) { db.CustomerInterests.Remove(m); } foreach (var interes in afiliado.Intereses.Where(x => x.Checked == true)) { CustomerInterest customerInterest = new CustomerInterest() { customerid = afiliado.id, interestid = interes.id, comments = "" }; db.CustomerInterests.Add(customerInterest); } //Entidad: AffiliateAud int sumastatusidactual = (from a in db.Affiliates where a.id.Equals(afiliado.id) select a.sumastatusid ).SingleOrDefault().Value; //Solo inserto registros cuando hay cambio de estado de Afiliación if (sumastatusidactual != afiliado.sumastatusid) { var affiliateAuditoria = new AffiliateAud() { id = AfilliateAudID(), affiliateid = afiliado.id, modifieduserid = (int)HttpContext.Current.Session["userid"], modifieddate = DateTime.Now, statusid = afiliado.sumastatusid, reasonsid = Globals.ID_REASONS_INICIAL, comments = afiliado.comments }; db.AffiliateAuds.Add(affiliateAuditoria); } //YA NO SE ENVIARÁ INFORMACIÓN A LA WEB //if (SaveWebPlazas(afiliado)) //{ //ENTIDAD Photos_Affiliate if (fileNoValidado != null) { try { int length = fileNoValidado.ContentLength; byte[] buffer = new byte[length]; fileNoValidado.InputStream.Read(buffer, 0, length); Photos_Affiliate photos_affiliate = db.Photos_Affiliates.FirstOrDefault(x => x.Affiliate_id == afiliado.id); if (photos_affiliate == null) { photos_affiliate = new Photos_Affiliate() { photo = buffer, photo_type = fileNoValidado.ContentType, Affiliate_id = afiliado.id }; db.Photos_Affiliates.Add(photos_affiliate); } else { photos_affiliate.photo = buffer; photos_affiliate.photo_type = fileNoValidado.ContentType; } } catch { } } db.SaveChanges(); return true; //} //else //{ // return false; //} } }
//crea el afiliado en SumaPlazas (solicitud de afiliación) public bool Save(Afiliado afiliado, HttpPostedFileBase file) { using (LealtadEntities db = new LealtadEntities()) { //ENTIDAD Affiliatte var Affiliate = new Affiliate() { id = AfilliatesID(), customerid = afiliado.customerid, docnumber = afiliado.docnumber, clientid = afiliado.clientid, storeid = afiliado.storeid, channelid = afiliado.channelid, typeid = afiliado.typeid, affiliatedate = System.DateTime.Now, typedelivery = afiliado.typedelivery, storeiddelivery = afiliado.storeiddelivery, estimateddatedelivery = new DateTime(), creationdate = DateTime.Now, creationuserid = (int)HttpContext.Current.Session["userid"], modifieddate = DateTime.Now, modifieduserid = (int)HttpContext.Current.Session["userid"], statusid = db.SumaStatuses.FirstOrDefault(s => (s.value == ID_ESTATUS_AFILIACION_INICIAL) && (s.tablename=="Affiliatte")).id,//ID_ESTATUS_AFILIACION_INICIAL, reasonsid = null, twitter_account = afiliado.twitter_account, facebook_account = afiliado.facebook_account, instagram_account = afiliado.instagram_account, comments = afiliado.comments }; db.Affiliates.Add(Affiliate); //ENTIDAD CLIENTE var CLIENTE = new CLIENTE() { TIPO_DOCUMENTO = afiliado.docnumber.Substring(0, 1), NRO_DOCUMENTO = afiliado.docnumber.Substring(2), NACIONALIDAD = afiliado.nationality, NOMBRE_CLIENTE1 = afiliado.name, NOMBRE_CLIENTE2 = afiliado.name2 == null ? "" : afiliado.name2, APELLIDO_CLIENTE1 = afiliado.lastname1, APELLIDO_CLIENTE2 = afiliado.lastname2 == null ? "" : afiliado.lastname2, FECHA_NACIMIENTO = DateTime.ParseExact(afiliado.birthdate, "dd-MM-yyyy", CultureInfo.InvariantCulture), SEXO = afiliado.gender, EDO_CIVIL = afiliado.maritalstatus, OCUPACION = afiliado.occupation == null ? "" : afiliado.occupation, TELEFONO_HAB = afiliado.phone1, TELEFONO_OFIC = afiliado.phone2 == null ? "" : afiliado.cod_estado, TELEFONO_CEL = afiliado.phone3 == null ? "" : afiliado.cod_estado, E_MAIL = afiliado.email, COD_SUCURSAL = afiliado.storeid, COD_ESTADO = afiliado.cod_estado, COD_CIUDAD = afiliado.cod_ciudad, COD_MUNICIPIO = afiliado.cod_municipio, COD_PARROQUIA = afiliado.cod_parroquia, COD_URBANIZACION = afiliado.cod_urbanizacion, FECHA_CREACION = DateTime.Now }; db.CLIENTES.Add(CLIENTE); //ENTIDAD CustomerInterest foreach (var interes in afiliado.Intereses.Where(x => x.Checked == true)) { CustomerInterest customerInterest = new CustomerInterest() { customerid = Affiliate.id, interestid = interes.id, comments = "" }; db.CustomerInterests.Add(customerInterest); } //ENTIDAD Photos_Affiliate if (file != null) { try { int length = file.ContentLength; byte[] buffer = new byte[length]; file.InputStream.Read(buffer, 0, length); var Photos_Affiliate = new Photos_Affiliate() { photo = buffer, photo_type = file.ContentType, Affiliate_id = Affiliate.id }; db.Photos_Affiliates.Add(Photos_Affiliate); } catch { return false; } } else { return false; } //ENTIDAD CompanyAffiliate var companyaffiliate = new CompanyAffiliate() { affiliateid = Affiliate.id, companyid = afiliado.companyid, begindate = DateTime.Now, enddate = new DateTime(), comments = afiliado.comments, active = true }; db.CompanyAffiliates.Add(companyaffiliate); //ENTIDAD AffiliateAud var affiliateauditoria = new AffiliateAud() { id = AfilliateAudID(), affiliateid = Affiliate.id, modifieduserid = (int)HttpContext.Current.Session["userid"], modifieddate = System.DateTime.Now, statusid = Affiliate.statusid, reasonsid = ID_REASONS_INICIAL, comments = afiliado.comments }; db.AffiliateAuds.Add(affiliateauditoria); if (SaveWebPlazas(afiliado)) { db.SaveChanges(); return true; } else { return false; } } }
//YA NO SE ENVIARÁ INFORMACIÓN A LA WEB //private bool SaveWebPlazas(AfiliadoSuma afiliado) //{ // string RespuestaWebPlazasJson = WSL.WebPlazas.UpdateClient(afiliado); // if (ExceptionServicioWebPlazas(RespuestaWebPlazasJson)) // { // return false; // } // RespuestaWebPlazas RespuestaWebPlazas = (RespuestaWebPlazas)JsonConvert.DeserializeObject<RespuestaWebPlazas>(RespuestaWebPlazasJson); // return (RespuestaWebPlazas.excode == "0"); //} public bool Save(AfiliadoSuma afiliado, HttpPostedFileBase file) { using (LealtadEntities db = new LealtadEntities()) { db.Database.Connection.ConnectionString = AppModule.ConnectionString("SumaLealtad"); //ENTIDAD Affiliatte var Affiliate = new Affiliate() { id = AfilliatesID(), customerid = afiliado.customerid, docnumber = afiliado.docnumber, clientid = afiliado.clientid, //storeid = afiliado.storeid, channelid = afiliado.channelid, typeid = afiliado.typeid, affiliatedate = System.DateTime.Now, typedelivery = afiliado.typedelivery, storeiddelivery = afiliado.storeiddelivery, estimateddatedelivery = new DateTime(), creationdate = DateTime.Now, creationuserid = (int)HttpContext.Current.Session["userid"], modifieddate = DateTime.Now, modifieduserid = (int)HttpContext.Current.Session["userid"], sumastatusid = db.SumaStatuses.FirstOrDefault(s => (s.value == Globals.ID_ESTATUS_AFILIACION_INICIAL) && (s.tablename == "Affiliatte")).id, reasonsid = null, twitter_account = afiliado.twitter_account, facebook_account = afiliado.facebook_account, instagram_account = afiliado.instagram_account, comments = afiliado.comments }; db.Affiliates.Add(Affiliate); //ENTIDAD CLIENTE CLIENTE cliente = db.CLIENTES.FirstOrDefault(c => c.TIPO_DOCUMENTO + "-" + c.NRO_DOCUMENTO == afiliado.docnumber); if (cliente == null) { var CLIENTE = new CLIENTE() { TIPO_DOCUMENTO = afiliado.docnumber.Substring(0, 1), NRO_DOCUMENTO = afiliado.docnumber.Substring(2), E_MAIL = afiliado.email == null ? "" : afiliado.email, NOMBRE_CLIENTE1 = afiliado.name, NOMBRE_CLIENTE2 = afiliado.name2 == null ? "" : afiliado.name2, APELLIDO_CLIENTE1 = afiliado.lastname1 == null ? "" : afiliado.lastname1, APELLIDO_CLIENTE2 = afiliado.lastname2 == null ? "" : afiliado.lastname2, FECHA_NACIMIENTO = afiliado.birthdate == null ? new DateTime?() : DateTime.ParseExact(afiliado.birthdate, "dd/MM/yyyy", CultureInfo.InvariantCulture), //NACIONALIDAD = afiliado.nationality == null ? "" : afiliado.nationality, //SEXO = afiliado.gender == null ? "" : afiliado.gender, //EDO_CIVIL = afiliado.maritalstatus == null ? "" : afiliado.maritalstatus, //COD_SUCURSAL = afiliado.storeid, //nuevos campos con claves a tablas nuevas NACIONALITY_ID = afiliado.nationality == null ? 0 : Convert.ToInt32(afiliado.nationality), SEX_ID = afiliado.gender == null ? 0 : Convert.ToInt32(afiliado.gender), CIVIL_STATUS_ID = afiliado.maritalstatus == null ? 0 : Convert.ToInt32(afiliado.maritalstatus), //OCUPACION = afiliado.occupation == null ? "" : afiliado.occupation.Substring(0, 30), TELEFONO_HAB = afiliado.phone1, TELEFONO_OFIC = afiliado.phone2 == null ? "" : afiliado.phone2, TELEFONO_CEL = afiliado.phone3 == null ? "" : afiliado.phone3, COD_ESTADO = afiliado.cod_estado, COD_CIUDAD = afiliado.cod_ciudad, COD_MUNICIPIO = afiliado.cod_municipio, COD_PARROQUIA = afiliado.cod_parroquia, COD_URBANIZACION = afiliado.cod_urbanizacion, FECHA_CREACION = DateTime.Now }; //nuevos campos con claves a tablas nuevas var query = db.Stores.OrderBy(x => x.store_code); CLIENTE.STORE_ID = (from q in query.AsEnumerable() where q.store_code == afiliado.storeid.ToString() select q.id).FirstOrDefault(); if (afiliado.occupation == null) { CLIENTE.OCUPACION = afiliado.occupation; } else if (afiliado.occupation.Length > 30) { CLIENTE.OCUPACION = afiliado.occupation.Substring(0, 30); } else { CLIENTE.OCUPACION = afiliado.occupation; } db.CLIENTES.Add(CLIENTE); } else { cliente.E_MAIL = afiliado.email == null ? "" : afiliado.email; cliente.NOMBRE_CLIENTE1 = afiliado.name; cliente.NOMBRE_CLIENTE2 = afiliado.name2 == null ? "" : afiliado.name2; cliente.APELLIDO_CLIENTE1 = afiliado.lastname1 == null ? "" : afiliado.lastname1; cliente.APELLIDO_CLIENTE2 = afiliado.lastname2 == null ? "" : afiliado.lastname2; cliente.FECHA_NACIMIENTO = afiliado.birthdate == null ? new DateTime?() : DateTime.ParseExact(afiliado.birthdate, "dd/MM/yyyy", CultureInfo.InvariantCulture); //cliente.NACIONALIDAD = afiliado.nationality == null ? "" : afiliado.nationality; //cliente.SEXO = afiliado.gender == null ? "" : afiliado.gender; //cliente.EDO_CIVIL = afiliado.maritalstatus == null ? "" : afiliado.maritalstatus; //cliente.COD_SUCURSAL = afiliado.storeid; //nuevos campos con claves a tablas nuevas cliente.NACIONALITY_ID = afiliado.nationality == null ? 0 : Convert.ToInt32(afiliado.nationality); cliente.SEX_ID = afiliado.gender == null ? 0 : Convert.ToInt32(afiliado.gender); cliente.CIVIL_STATUS_ID = afiliado.maritalstatus == null ? 0 : Convert.ToInt32(afiliado.maritalstatus); var query = db.Stores.OrderBy(x => x.store_code); cliente.STORE_ID = (from q in query.AsEnumerable() where q.store_code == afiliado.storeid.ToString() select q.id).FirstOrDefault(); //cliente.OCUPACION = afiliado.occupation == null ? "" : afiliado.occupation; cliente.TELEFONO_HAB = afiliado.phone1; cliente.TELEFONO_OFIC = afiliado.phone2 == null ? "" : afiliado.phone2; cliente.TELEFONO_CEL = afiliado.phone3 == null ? "" : afiliado.phone3; cliente.COD_ESTADO = afiliado.cod_estado; cliente.COD_CIUDAD = afiliado.cod_ciudad; cliente.COD_MUNICIPIO = afiliado.cod_municipio; cliente.COD_PARROQUIA = afiliado.cod_parroquia; cliente.COD_URBANIZACION = afiliado.cod_urbanizacion; if (afiliado.occupation == null) { cliente.OCUPACION = afiliado.occupation; } else if (afiliado.occupation.Length > 30) { cliente.OCUPACION = afiliado.occupation.Substring(0, 30); } else { cliente.OCUPACION = afiliado.occupation; } } //ENTIDAD CustomerInterest foreach (var interes in afiliado.Intereses.Where(x => x.Checked == true)) { CustomerInterest customerInterest = new CustomerInterest() { customerid = Affiliate.id, interestid = interes.id, comments = "" }; db.CustomerInterests.Add(customerInterest); } //ENTIDAD Photos_Affiliate if (file != null) { try { int length = file.ContentLength; byte[] buffer = new byte[length]; file.InputStream.Read(buffer, 0, length); var Photos_Affiliate = new Photos_Affiliate() { photo = buffer, photo_type = file.ContentType, Affiliate_id = Affiliate.id }; db.Photos_Affiliates.Add(Photos_Affiliate); } catch { return false; } } //PARA QUE LA IMAGEN DEL DOCUMENTO SEA OPCIONAL //else //{ // return false; //} //ENTIDAD AffiliateAud var affiliateauditoria = new AffiliateAud() { id = AfilliateAudID(), affiliateid = Affiliate.id, modifieduserid = (int)HttpContext.Current.Session["userid"], modifieddate = System.DateTime.Now, statusid = Affiliate.sumastatusid.Value, reasonsid = Globals.ID_REASONS_INICIAL, comments = afiliado.comments }; db.AffiliateAuds.Add(affiliateauditoria); //YA NO SE ENVIARÁ INFORMACIÓN A LA WEB //if (SaveWebPlazas(afiliado)) //{ db.SaveChanges(); return true; //} //else //{ // return false; //} } }